gpt4 book ai didi

uitableview - 取消选择单元格时从数组中删除值

转载 作者:行者123 更新时间:2023-11-30 10:19:29 25 4
gpt4 key购买 nike

如果用户取消选择一行,我会尝试删除数组 selectedFoodTypes 中的特定项目。但是,我不断遇到错误:

fatal error :在解包可选值时意外发现 nil

override func tableView(tableView: UITableView, didDeselectRowAtIndexPath indexPath: NSIndexPath) {
let indexPath = tableView.indexPathForSelectedRow();
let deselectedCell = tableView.cellForRowAtIndexPath(indexPath!) as UITableViewCell!
selectedFoodTypes = selectedFoodTypes.filter {$0 != deselectedCell.textLabel!.text!}
println(selectedFoodTypes)
}

enter image description here

最佳答案

为什么要调用let indexPath = tableView.indexPathForSelectedRow()

该函数的 indexPath 参数为您提供取消选择的行的 indexPath

override func tableView(tableView: UITableView, didDeselectRowAtIndexPath indexPath: NSIndexPath) {
let deselectedCell = tableView.cellForRowAtIndexPath(indexPath!) as UITableViewCell!
selectedFoodTypes = selectedFoodTypes.filter {$0 != deselectedCell.textLabel!.text!}
println(selectedFoodTypes)
}

上面的代码可能有效。但与单元格的 textLabel.text 进行比较并不是一个好主意。例如,如果 datasourceArray 是一个数组并设置为 tableView dataSource,您可以这样做

override func tableView(tableView: UITableView, didDeselectRowAtIndexPath indexPath: NSIndexPath) {
let deselectedCell = tableView.cellForRowAtIndexPath(indexPath!) as UITableViewCell!
selectedFoodTypes = selectedFoodTypes.filter {$0 != datasourceArray[indexPath.row]}
println(selectedFoodTypes)
}

关于uitableview - 取消选择单元格时从数组中删除值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27955882/

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