如果用户取消选择行,我正在尝试删除数组selectedFoodTypes
中的特定项。但是,我一直遇到错误:
fatal error: unexpectedly found nil while unwrapping an Optional value
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)
}
答案 0 :(得分:1)
你为什么打电话给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)
}