gpt4 book ai didi

ios - UITableViewCells 中的复选标记显示不正确

转载 作者:行者123 更新时间:2023-11-28 09:34:32 24 4
gpt4 key购买 nike

我有一个小的可滚动 tableView,它显示大约八行,当我选择一行时会出现一个复选标记,当我再次选择它时它会消失。

问题是,当我向下滚动并重复使用单元格时,会自动检查更多行。跟踪哪些行需要复选标记以免发生这种情况的最佳做法是什么。我到处都看过,但没有找到效果很好的 Swift 解决方案。

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

let cell = tableView.dequeueReusableCellWithIdentifier("cell")! as UITableViewCell

cell.textLabel?.text = "\(searchResults.usernameUserSearchArray[indexPath.row])"

return cell
}

func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {

let selectedCell = tableView.cellForRowAtIndexPath(indexPath)

if selectedCell?.accessoryType == UITableViewCellAccessoryType.Checkmark {

selectedCell?.accessoryType = UITableViewCellAccessoryType.None

} else {

selectedCell?.accessoryType = UITableViewCellAccessoryType.Checkmark
}

tableView.reloadData()
}

最佳答案

难道这样的事情不适合你吗?我没有测试它,因为我不在我的 Mac 上。

var selectedCells = [NSIndexPath]()

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("cell")!
cell.accessoryType = selectedCells.contains(indexPath) ? .Checkmark : .None

return cell
}

func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
let selectedCell = tableView.cellForRowAtIndexPath(indexPath)

selectedCells.append(indexPath)

if selectedCell?.accessoryType == .Checkmark {

selectedCell?.accessoryType = .None

selectedCells = selectedCells.filter {$0 != indexPath}

} else {

selectedCell?.accessoryType = .Checkmark
}
}

关于ios - UITableViewCells 中的复选标记显示不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34369939/

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