indexPathForSelectedRow返回意外的nil

时间:2016-01-09 22:10:59

标签: ios swift uitableview

我有一个名为Objects的数组,它是NSManagedObject的子类,并在UITableView中显示其属性。

我有一个segue来查看对象的详细信息,这是使用手势执行的 - 这可以正常工作,直到我使用prepareForSegueUITableViewCell的数据传递给segueing {{ 1}}。但是在使用时  ViewController, 我获取所选行的nil值,因此应用程序在尝试传递数据时崩溃。以下是完整代码的示例:

let indexPath = self.table.indexPathForSelectedRow

有谁知道可能出现的问题?我在另一个ViewController中做了同样的事情,它运行良好。此外,我试图在选择单元格时实现另一个segue,但我无法使用函数if segue.identifier == "showDetails" { let vc = segue.destinationViewController as! DetailsViewController let indexPath = self.table.indexPathForSelectedRow if indexPath == nil { print(index path is NIL")} let selectedObject = self.objects[indexPath!.row] vc.setting = setting vc.selectedObject = selectedObject } 调用prepareForSegue,但可以在我的其他didSelectRowAtIndexPath中调用 - 我不确定是否有此信息是相关的,或者也可能表明问题可能是什么。

1 个答案:

答案 0 :(得分:3)

没有选择单元格是有效的条件。你应该采取防御性措施来处理这种情况。您可以实施shouldPerformSegueWithIdentifier:方法,如果false返回nil,则返回indexPathForSelectedRow