2013-10-20 49 views
2

我有2個視圖控制器,它們之間有一個segue。我的主視圖控制器叫做ViewController。在我的第二個視圖控制器PreferencesViewController我有一個按鈕,必須更改我的主ViewController中的一些值。但它不...委託沒有從另一個視圖控制器調用,嘗試了一切

我已經在我的PreferencesViewController.h中設置了一個委託協議,就像我在Stack Overflow上看到的一些例子(是的,我做過谷歌它;))。

我還導入了PreferencesViewController.h文件到我的主視圖控制器,藏漢我告訴視圖控制器是委託:<PreferencesViewControllerDelegate>

我也在我的實現主視圖控制器的實現方法。但是當我按下按鈕時,這個方法不會被調用。我實施了[self.delegate methodExample];進入我的IBAction

我讀過很多關於設置代理的內容。我需要在哪裏做到這一點?我需要創建並分配/ init一個我的PreferenceViewController的實例嗎?我試了這個,然後告訴實例instance.delegate = self,但那也沒有工作...

希望有人能幫助我!

回答

1

你是對的,你需要設置委託。使用segues時最簡單的方法是使用他的prepareForSegue:sender:方法在源視圖控制器(在這種情況下爲ViewController)。傳遞給此方法的segue對象具有對目標視圖控制器的引用;你可能想要做的事,如:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { 
    if ([segue.identifier isEqualToString:@"Your preferences segue identifier"]) { 
     PreferencesViewController *preferencesViewController = 
segue.destinationViewController; 
     preferencesViewController.delegate = self; 
    } 
} 

由於您使用的塞格斯,系統正在爲您的新視圖控制器的分配/初始化;系統會調用此方法,以便在顯示之前將新視圖控制器掛鉤。

+0

立即解決了問題!謝啦! –

相關問題