2016-04-15 10 views
0

Ich habe folgende Klasse für eine Tabellendarstellung Zelle:Schalteränderung auf tableview Reihe, die anderen Reihen

class QuestionCell: UITableViewCell { 
    @IBOutlet weak var questionAnswer: UISwitch! 
    @IBOutlet weak var questionLabel: UILabel! 

    var data: Answer? 

    func configureForQuestion(data: Answer) { 
     print("configureForQuestion triggered") 
     questionLabel.text = data.question 
     self.data = data 
    } 

    @IBAction func questionAnswerChanged(sender: UISwitch) { 
     data?.answer = sender.on 
    } 
} 

Diese Zelle besteht aus einem Etikett und Schaltern. Wenn ich jetzt den Switch-Status für die erste Zeile ändere, ändert sich das auch für die letzte Zeile. Keine anderen Reihen scheinen auf diese Weise verbunden zu sein. Ich bin ziemlich ratlos.

Zusätzliche Informationen:

func numberOfSectionsInTableView(tableView: UITableView) -> Int { 
    return 1 
} 

func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
    return answers.count 
} 

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
    let cell = tableView.dequeueReusableCellWithIdentifier(TableView.CellIdentifiers.QuestionCell, forIndexPath: indexPath) as! QuestionCell 
    cell.configureForQuestion(answers[indexPath.row]) 
    return cell 
} 
+0

Dies ist der Hinweis, TableView.dequeueReusableCellWithIdentifier() die dequedCells erstellen das Problem. – satheeshwaran

+0

@satheeshwaran so wie könnte ich das umgehen? – user2363025

+0

Also, wenn Sie Schalter in Zeile 2 umschalten wirkt es sich auf alles andere aus oder es passiert einfach immer mit Zeile 1 ?? – satheeshwaran

Antwort

0

Sie müssen prepareForReuse in der Zelle überschreiben und die Daten Ihrer Elemente zurücksetzen.

override func prepareForReuse() { 
    self.questionLabel.text = nil 
    self.questionAnswer.on = data?.answer 
} 
+0

ursprünglich hatte ich QuestionAnswer.on = false in Meine configureForQuestion func, aber das war ein Problem in dem, wenn ich einen Schalter an und scrollte die Tabelle Ansicht und zurück, der Schalter würde auf false zurückgesetzt werden :( – user2363025

+0

behoben - benötigt, um questionAnswer.on = data.answer in meine configureForQuestion func! – user2363025

+0

nice! approved antwort? – TomCobo

0

Es kann sein, dass Ihre answers Array nicht die Daten, die Sie erwarten hat. Drucken Sie die Werte von answers im Debugger aus und sehen Sie, ob jeder answer den indexPath.row hat, den Sie erwarten.

Können Sie Ihren Code für die Einstellung der Werte in answers anzeigen?