3

我有 viewDidLoad(下一個tableView的)被調用之前didSelectRowAtIndexPath(當前tableView)。viewDidLoad在didSelectRowAtIndexPath之前被調用

我正在使用'singleton'來保存我的模型,到目前爲止這一直工作得很好。我試圖通過didSelectRowAtIndexPath中的變量設置,將當前表中選中的行didSelectRowAtIndexPath傳遞到目標tableview(它們通過故事板中的segue鏈接)。

但是,在我可以設置行號之前調用目的地tableviewviewDidLoad。稍後調用didSelectRowAtIndexPath,但是到那時我已經爲目標表設置了我的數據(錯誤地)。

+0

你能發表一些你的代碼嗎? –

+0

是的,請張貼一些代碼來進一步解釋。在我看來,像你的segue出現問題(如果你確實有一個)請詳細說明。 –

回答

5

當使用segues時,您不需要didSelectRowAtIndexPath:。您只需將賽格連接到IB中的單元格。在代碼只是使用:

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { 
    CustomViewController *newVC = [segue destinationViewController]; 
    newVC.property = theDataYouWantToPass; 
} 

您可以通過所傳遞的sender變量檢索您行。

UITableViewCell *cell = (UITableViewCell *) sender; 
NSIndexPath *indexPath = [self.tableView indexPathForCell:cell]; 
NSInteger myRow = indexPath.row; 
+0

謝謝蒙迪,完美。我開始認爲我做了一些真正調皮的事情。爲什麼我不需要使用didSelectRowAtIndexPath? – Ian

+0

這是傳統的方法,如果你願意的話。你可以在IB中刪除你的segue,而使用'didSelectRowAtIndexPath'。當使用segues時,它根本就沒有必要 - 或者你可以用它做不同的事情。 – Mundi

+0

考慮勾選複選標記,如果這解決了您的問題。 – Mundi

相關問題