在tableview行上切换更改影响其他行

时间:2016-04-15 14:34:09

标签: ios swift uitableview uiswitch valuechangelistener

我有一个表视图单元格的以下类:

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
    }
}

此单元格由标签和开关组成。目前,当我更改第一行的开关状态时,它也会更改最后一行。似乎没有其他行以这种方式连接。我对这个很难过。

额外信息:

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
}

2 个答案:

答案 0 :(得分:0)

可能是您的answers数组没有您期望的数据。在调试器中打印answers的值,看看每个answer是否具有您期望的indexPath.row

您能否在answers

中显示有关如何设置值的代码?

答案 1 :(得分:0)

您需要覆盖单元格中的prepareForReuse并重置ui元素数据。

m