如何防止UITableViewCell重复和重用?

时间:2015-06-12 12:50:31

标签: ios swift uitableview cocoa-touch

我正在做一个练习,其中我使用一个tableview,每行包含4个按钮。 我想要做的是单击每行中的按钮来更改其状态(从正常到突出显示)。 问题是,单元格自动复制我的点击,以便我没有点击的某些按钮突出显示。 此外,每次我向下滚动表格视图并返回上一个位置时,突出显示的按钮位置将自动更改。

我想它必须与我在代码中使用的dequeReusableCell机制有关。 如何防止这种情况发生?提前谢谢!

构建单元格的代码:

        func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
              let cell = tableView.dequeueReusableCellWithIdentifier("reuseIdentifier", forIndexPath: indexPath) as! ChoiceCell
           cell.selectionStyle = .None
        return cell

1 个答案:

答案 0 :(得分:5)

您绝对不希望阻止单元格出列过程执行其操作。这不是正确的做法。

相反,您的数据模型需要跟踪影响单元格状态的事物(例如是否突出显示按钮)。当某些事情发生改变单元格状态时,除了更改单元格的状态外,还要更新数据模型。

现在,当该单元格滚动时,可以重复使用它来表示数据模型中的其他内容。然后当我们滚动并且我们准备再次表示原始数据对象时,我们使用我们的数据模型将单元格设置为正确的状态。