gpt4 book ai didi

ios - UITableView 复选标记重复

转载 作者:搜寻专家 更新时间:2023-11-01 07:11:13 26 4
gpt4 key购买 nike

当我单击某行时,我的表格 View 的其他部分中不断出现复选标记。我不确定是否需要设置我的 accessoryType。我尝试了 mytableView.reloadData() 但这也没有帮助。

 var selected = [String]()
var userList = [Users]()

@IBOutlet weak var myTableView: UITableView!

@IBAction func createGroup(_ sender: Any) {

for username in self.selected{

ref?.child("Group").childByAutoId().setValue(username)

print(username)
}

}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let myCell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! MyTableViewCell
myCell.selectionStyle = UITableViewCellSelectionStyle.none
myCell.nameLabel.text = userList[indexPath.row].name
return myCell
}

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
if myTableView.cellForRow(at: indexPath)?.accessoryType == UITableViewCellAccessoryType.checkmark{

myTableView.cellForRow(at: indexPath)?.accessoryType = UITableViewCellAccessoryType.none
let currentUser = userList[indexPath.row]
selected = selected.filter { $0 != currentUser.name}
}
else{
myTableView.cellForRow(at: indexPath)?.accessoryType = UITableViewCellAccessoryType.checkmark
let currentUser = userList[indexPath.row]
selected.append(currentUser.name!)
}
}

最佳答案

您的问题不在这个方法中,而是在“加载”单元格的方法中。 (行单元格)

由于表格 View 使用可重复使用的单元格,它们通常会加载已经在其他地方显示的单元格。

因此,在单元格加载方法中,您应该“重置状态”加载的单元格,这包括配件类型,以及您可能已更改的任何其他属性。

所以只需在您的代码中更改它:

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let myCell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! MyTableViewCell
myCell.selectionStyle = UITableViewCellSelectionStyle.none
myCell.nameLabel.text = userList[indexPath.row].name

// ADD THIS
if userList[indexPath.row].isSelected {
myCell.accessoryType = UITableViewCellAccessoryType.checkmark
} else {
myCell.accessoryType = UITableViewCellAccessoryType.none
}

return myCell
}

编辑:

“userList[indexPath.row].isSelected”是您必须创建和管理的属性。 (所以你也必须在didSelectRowAt方法中修改它。

关于ios - UITableView 复选标记重复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44814496/

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