我有10行的默认UITableViewController 带有段控制的UITableViewCell
如果我更改segmentController可能在单元格2中选择的索引,则向下滚动segmentController的此状态将在其他单元格中
cells1(selectedIndex:1)
cells2(selectedIndex:1)
cells3(selectedIndex:1)
cells4(selectedIndex:1)
cells5(selectedIndex:1)
...在单元格2中选择其他索引(2) 向下滚动 和单元格5具有相同的选定索引,但我没有碰到它们
cells1(selectedIndex:1)
cells2(selectedIndex:2)
cells3(selectedIndex:1)
cells4(selectedIndex:1)
cells5(selectedIndex:2)
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 10
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath)
cell.selectionStyle = .none
cell.textLabel?.text = String(indexPath.row)
cell.textLabel?.textColor = .white
return cell
}
答案 0 :(得分:0)
UITableView和UICollectionView重用单元格。这意味着它仅将足够的单元格保留在内存中以显示屏幕上的内容。当您将单元格滚动出屏幕时,它们会反馈回来,成为正在显示的单元格。您需要正确配置单元格,使其重新出现在override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath)
因此,您需要每次在cellForRow
中设置分段控件的选择。
这意味着您将需要一种方法来跟踪对分段控件进行的选择,并在再次显示该单元格时调用该选项以正确设置分段控件。
答案 1 :(得分:0)
通过对UITableViewCell的prepareForReuse方法进行子类化来重置选择。
覆盖函数func prepareForReuse(){
}