2014-09-10 79 views
1

我已經從tableView控制器中分離了我的tableView委託和數據源。到目前爲止它的工作很棒。不過,我現在已經到了需要實現didSelectRowAtIndexPath委託方法的地方。當這個方法被調用時,我需要從我的視圖控制器執行segue,但是我沒有從委託類中引用視圖控制器來調用像[myViewController performSegueWithIdentifier的方法...從tableView委託類中調用視圖控制器segue

什麼是正確的方法處理這個?我只是將一個屬性添加到我的委託來存儲視圖控制器?這看起來不是一個好主意,因爲視圖控制器已經有了對委託的引用。我如何參考VC?我想我可以發佈通知,但必須有比這更好的方法。我總是隻使用視圖控制器作爲委託,所以我從來沒有處理過這個問題。

回答

0

這個問題對我來說似乎很奇怪,因爲如果你在storyboard中創建了segue,比如說從tableView單元格到另一個viewcontroller的push segue,那麼當點擊tableview單元格時,會自動觸發segue。您可以在

- (void)prepareForSegue:(UIStoryboardSegue *)segue 
       sender:(id)sender 

做其他的事情,作爲

屬性添加到我的委託存儲視圖控制器

這沒關係。因爲如果你從另一個VC電池使用賽格瑞

@property(nonatomic, assign) id<UITableViewDelegate> delegate 

視圖 - 控制不保留委託

+0

,那麼你就不能使用didSelectRowAtIndexPath方法,因爲這被prepareForSegue後調用。最初,我將segue設置爲手動segue,這就是爲什麼我需要從我的代理的didSelectRowAtIndexPath內調用performSegueWithidentifier。然而,我最終以你的方式做了,並將segue從單元格更改爲VC,然後使用prepareForSegue並使用self.tableView.indexPathForSelectedRow.row來索引我的數據源。所以最後你是對的,我不需要任何我認爲我做的。謝謝 – 2014-09-11 02:58:09

相關問題