gpt4 book ai didi

ios - 在表格 View 中滚动后,选中标记会更改

转载 作者:行者123 更新时间:2023-12-01 19:29:29 26 4
gpt4 key购买 nike

不管我做什么,滚动后都无法保持选中标记项目。我知道这与以下事实有关:当项目可见时,单元将被重用,但是我不确定如何处理。
以下代码成功显示了第一次加载时选择的正确项目,问题是,一旦我开始滚动,它就会随机选择其他项目。
滚动后保留所选项目并防止选择不需要的项目/行的正确方法是什么?

class CategoriesViewController: UIViewController, UITableViewDelegate, UITableViewDataSource { 
var categories: Results<Category>! // I'm getting this from the Realm data base
var categoryTracker:Category? // I'm getting this from other view controler

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return categories.count
}

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "categoriesCell", for: indexPath) as! CategoriesCell

let categoryList = categories[indexPath.row]
cell.labelCategoryName.text = categoryList.categoryName

if categories[indexPath.row].categoryID == self.categoryTracker!.categoryID{
cell.accessoryType = .checkmark
}

return cell
}

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {

// show checkmark on category for selected item and uncheck the rest
for row in 0..<tableView.numberOfRows(inSection: indexPath.section) {
if let cell = tableView.cellForRow(at: IndexPath(row: row, section: indexPath.section)) {
cell.accessoryType = row == indexPath.row ? .checkmark : .none
}
}
}
}
图片:
enter image description here

最佳答案

你是对的。发生这种情况的原因是,当重用带有.checkmark的单元格时,不会将其附件类型重置为.none
您应该更新:

if categories[indexPath.row].categoryID == self.categoryTracker!.categoryID{
cell.accessoryType = .checkmark
}
至:
if categories[indexPath.row].categoryID == self.categoryTracker!.categoryID {
cell.accessoryType = .checkmark
} else {
cell.accessoryType = .none
}

关于ios - 在表格 View 中滚动后,选中标记会更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63818255/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com