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

时间:2015-01-15 02:27:59

标签: uitableview swift

如果用户取消选择行,我正在尝试删除数组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)
}

enter image description here

1 个答案:

答案 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)
}