如何防止dequeueReusableCellWithIdentifier重复我的段选择?

时间:2016-05-08 20:21:31

标签: ios swift uitableview

我有包含自定义单元格的表包含uisegment 问题是当在uisegment中选择任何项目并在表格视图中向下滚动时,它会更改表格中单元格中的uisegment中的选择

几乎是像11和2的单元格1,如12

它与dequeueReusableCellWithIdentifier有关,我的问题是解决它的最佳方法是什么?

enter image description here

     func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell
{

    let item = self.cells.items[indexPath.row]

    if let cellHedaer: TcPationQuestionHeader = tableView.dequeueReusableCellWithIdentifier("HeaderItem") as? TcPationQuestionHeader {
        cellHedaer.setCell(Results.Questions[indexPath.row/2 ])

        if item as? SwiftyAccordionCells.HeaderItem != nil {
            let cellItem: TcPationQuestionItem = tableView.dequeueReusableCellWithIdentifier("Item") as! TcPationQuestionItem

            cellItem.setCell(Results.Questions[indexPath.row/2])

            return cellItem
        }

        cellHedaer.selectionStyle = UITableViewCellSelectionStyle.None
        return cellHedaer
    }

1 个答案:

答案 0 :(得分:1)

我在您的代码中看到了两个主要问题:

  1. 您不应该将状态保留在UI中。每个从UI访问数据 是一个很大的错误。你应该在模型中保持选择。最简单的方法是将数组var保留在控制器中。

  2. 在某些情况下,您会拨打dequeueReusableCellWithIdentifier 2次。这也不应该发生。

  3. 不要忘记cellForRow的实施已与numberOfRowsAtIndexPathnumberOfSections相关联。如果你想更详细的帮助粘贴这两个功能。