[英]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.