2017-04-14 2 views
0

Hallo Ich habe derzeit eine UItableview und in dieser Tabellenansicht habe ich eine benutzerdefinierte Zelle, die zwei UIButtons enthält. Dies dient dazu, eine Up- und Downvote-Funktion zu erreichen. Ich frage mich nur, wie ich diese uibuttons in der Zelle deaktivieren würde, nachdem die Benutzer darauf klicken und andere Zellenbuttons nicht beeinflussen, die die gleiche Schablone verwenden?So deaktivieren Sie eine UIbutton in einer UItableviewcell

Ich habe versucht, eine Funktion in der Steuerung der uitableviewcell ausgeführt. Wenn die Schaltfläche geklickt wird, würde ich die Schaltflächen deaktivieren, aber mit dieser Methode habe ich einen Bug bekommen, bei dem auch andere Zellen-Buttons deaktiviert sind.

@IBOutlet weak var down: UIButton! 
@IBOutlet weak var up: UIButton! 


@IBAction func upVoteButton(_ sender: UIButton) 
{ 

    self.up.isEnabled = false 

} 
@IBAction func downVoteButton(_ sender: UIButton) { 

    self.up.isEnabled = false 
} 

Bitte helfen Sie! Danke im Voraus.

+0

Tabellenzellen sind wiederverwendbar Sobald Sie scrollen, sind die neuen Zellen wiederverwendbare cells.so, wenn Sie die eine sichtbar deaktiviert, bevor die neue auch deaktiviert wird. Sie können versuchen, verwenden (preparedforreuse) -Methode in Zelle benutzerdefinierte Klasse und erreichen Sie Ihr Ziel.Sie können prüfen, wie diese Funktion funktioniert. –

Antwort

2

Soweit ich denken kann, würde ich lieber ein Array von checkList erstellen: [Bool] und in Sicht geladen Methode oder in einer Methode, wo Sie versuchen, die Tabelle einzurichten dann konfigurieren Sie das Array der Länge Ihrer Tabelle wie wahr und wenn @IBAction heißt dann tun, um diese

let cell = sender.superview?.superview as! UITableViewCell 
    let tableview = cell.superview?.superview as! UITableView; 
    let index = tableview.indexPath(for: cell); 
    let n = index?.section/row // whatever u r using 
    checkList[n] = false; 

jetzt in Überschreibung func Tableview (_ Tableview: UITableView, cellForRowAt indexPath: indexPath) -> UITableViewCell tun dies

cell.button.isEnabled = checkList[indexPath.section/row] 
+0

es ist nur eine Übersicht und nicht der genaue Code, also wenn Sie irgendein Problem haben, fragen Sie bitte – adam

+0

Danke, ich werde das ausprobieren! – JackieXY

+0

Hallo Adam Ich habe versucht, um diese Methode zu arbeiten. Ich kann nicht auf die Variable checkList in meiner IBAction-Methode zugreifen. Das CheckList-Array wird in einer ViewController-Klasse gespeichert, während sich die IBaction in einer UItableviewcell-Klasse befindet. Irgendwelche Vorschläge? Das bedeutet, wenn ich versuche, checkList [n] = false auszuführen. Ich bekomme den Fehler "Verwendung von Unsolve-Bezeichner" – JackieXY

Verwandte Themen