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 1 或 Section 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 中单元格的功能?