2016-01-09 89 views
0

我有一個名爲Objects的數組,它是NSManagedObject的一個子類,並在UITableView中顯示它們的屬性。indexPathForSelectedRow返回意外的零

我有一個SEGUE看對象,這是使用手勢執行的細節 - 直到我用prepareForSegueUITableViewCell的數據傳遞給segueing ViewController能正常工作。但是,當使用 let indexPath = self.table.indexPathForSelectedRow, 我得到一個無選定的行的值,因此應用程序在嘗試傳遞數據時崩潰。這裏是一個完整的代碼示例:

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   
} 

有誰知道什麼可能會出錯?我在另一個ViewController中做了同樣的事情,它工作正常。此外,我試圖實現另一個時間單元格被選中,但我不能撥打prepareForSegue使用功能didSelectRowAtIndexPath,但可以在我的其他ViewController - 我不知道這些信息是否相關或可能表明問題可能是什麼。

+1

如何觸發segue? – vacawama

+0

@vacawama爲'objectDetails'傳遞數據的segue可以工作,並通過一個手勢來完成。另一個手勢,我試圖執行一個segue,我試圖在選擇單元格時執行。 – RileyDev

+0

只是爲了確認,是self.table!= nil? – kerry

回答

3

未選擇單元格是有效的條件。你應該防守地處理這種情況。您可以執行shouldPerformSegueWithIdentifier:方法,並返回false如果indexPathForSelectedRow返回零