簡體   English   中英

委托沒有從另一個ViewController調用,嘗試了一切

[英]Delegate doesn't get called from another viewcontroller, tried everything

我有2個視圖控制器,它們之間有一個縫隙。 我的主要viewcontroller稱為ViewController 在第二個名為PreferencesViewController viewcontroller中,我有一個按鈕必須更改主ViewController中的某些值。 但這不是...

我已經在我的PreferencesViewController.h設置了一個委托協議,就像我在Stack Overflow上的幾個示例中看到的那樣(是的,我在google上找到了它;)。

我還已經將PreferencesViewController.h文件導入到我的主ViewController中,並且我還告訴ViewController是委托: <PreferencesViewControllerDelegate>

我還在主ViewController的實現中實現了該方法。 但是當我按下按鈕時不會調用此方法。 我實現了[self.delegate methodExample]; 進入我的IBAction

我已經閱讀了很多有關設置委托的信息。 我需要在哪里做? 我是否需要創建和分配/初始化PreferenceViewController的實例? 我嘗試了這個然后告訴實例instance.delegate = self但是那也不起作用...

希望有人可以幫助我!

您正確地需要設置委托。 使用segues時最簡單的方法是在他的源代碼視圖控制器(在本例中為ViewController )中使用prepareForSegue:sender:方法。 傳遞給此方法的segue對象具有對目標視圖控制器的引用; 您可能想要執行以下操作:

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

由於您使用的是segues,因此系統正在為您執行新視圖控制器的alloc / init。 系統調用此方法,以使您可以在顯示新視圖控制器之前對其進行任何掛鈎。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM