gpt4 book ai didi

ios - 如何通过点击来选择和取消选择行

转载 作者:行者123 更新时间:2023-11-28 08:14:23 24 4
gpt4 key购买 nike

我有一个带有 UITableViewCell 的 UITableView,我想通过单击它们来选择它们,并通过再次单击它们来取消选择它们。首先,我尝试过

func tableView(_ tableView: UITableView, didDeselectRowAt indexPath: IndexPath) {
// code
}

但我注意到,当您第二次单击单元格时,此功能不会执行;当您单击另一个单元格时,它就会执行。但我希望您可以单击多个单元格,这些单元格在您单击它们时会被选中。

所以我做了这段代码(简化):

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
print("Selected")
let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! LektionTableViewCell
if cell.accessoryType == .none {
print("Type = none")
cell.accessoryType = .checkmark
Lektion.insert(Dateien[indexPath.row], at: Lektion.count)
} else if cell.accessoryType == .checkmark {
print("Type = check")
cell.accessoryType = .none
Lektion.remove(at: indexPath.row)
}
}

但它不能正常工作:

  1. 当我点击一个单元格时,文本会自动变成“标签”(它在 View 构建器中的文本)
  2. 当我点击带有复选标记的单元格时,复选标记没有消失并且 Xcode 显示“Type = none”;这是错误的。

谁能帮帮我?

最佳答案

我不能评论,所以我在这里添加。从您的代码中,我们看不到您将用于填充单元格的数据存储在哪里。所以我不知道这是否可以帮助你,但假设你有一个包含你的对象的数组,一种方法是在 didSelectRowAt indexPath 方法上为你的对象设置一个“isSelected”变量,然后调用tableview.reloadData()。像这样:

     func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
myObjects[indexPath.row].isSelected = !myObjects[indexPath.row].isSelected
tableView.reloadData()
}

然后在 cellForRowAtIndexPath 方法上,当您创建单元格时,您可以根据对象的标志轻松地将 accessoryType 设置为 .checkmark 或 .none。像这样:

cell.accessoryType = myObjects[indexPath.row].isSelected ? .checkMark : .none

希望对您有所帮助。

关于ios - 如何通过点击来选择和取消选择行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42932614/

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