Swift:UITableView 单元格受到另一部分中单元格的影响

Posted

技术标签:

【中文标题】Swift:UITableView 单元格受到另一部分中单元格的影响【英文标题】:Swift: UITableView cells being affected by cells in another section 【发布时间】:2015-10-19 05:45:23 【问题描述】:

我有一个函数可以将 Section 0 中单元格的 accessoryType 更改为复选标记。它工作得很好,并在选中时显示一个复选标记,但如果选择了 Section 1Section 2 中的单元格,它将移动 Section 0。如果有人能告诉我如何解决这个问题,那就太好了。

    //Adds Checkmark to Cells when Selected
    override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) 
        let section = 0
        let numberOfRows = tableView.numberOfRowsInSection(section)
        for row in 0..<numberOfRows 
            if let cell = tableView.cellForRowAtIndexPath(NSIndexPath(forRow: row, inSection: section)) 
                cell.accessoryType = row == indexPath.row ? .Checkmark : .None
            
        
    

【问题讨论】:

您是否启用了多项选择?我假设您一次只能选择一行,这就是为什么您在选择其他内容时会松开复选标记 另外,为什么不在 cellForRowatIndexPath 出列单元格时添加属性类型? 是的,我有三个部分。如果我按下第二部分的第一个单元格,它将选中第一部分的第一个单元格。每个部分的第二个和第三个单元格也是如此。我只想在第一部分使用此代码。 【参考方案1】:

由于您的单元格是重复使用的,如果您在创建单元格时没有设置单元格的设置,就会发生这种情况。

您需要将单元格的accessoryType 设置回cellForRowAtIndexPath 函数覆盖。

【讨论】:

你能写一些示例代码吗?我不是很明白。我的表是在情节提要中创建的。另外,我只想让第一部分受代码影响。 您的表格是在情节提要中创建的,但是您在代码中“填充”了单元格。出于性能原因,单元格被重复使用。因此,当您滚动时,您看到的新单元格将是刚刚消失的旧单元格。所以你需要重新设置单元格的“所有”设置,以避免它看起来像旧的。

以上是关于Swift:UITableView 单元格受到另一部分中单元格的影响的主要内容,如果未能解决你的问题,请参考以下文章

Swift:UIView 出现在 UITableView 单元格中

Swift - uitableview 重用单元格时用户输入混淆?

在 UITableView 中重新排序单元格会取消 Swift 中单元格的功能?

如何在 Swift 中动态更改包含 UICollectionView 单元格的 UITableView 单元格的高度?

UITableView 单元格的动态高度问题(Swift)

Swift:将包含自定义标签的单元格添加到 UITableView