我有2个viewcontrollers,它们之间有一个segue。我的主视图控制器称为ViewController
。在我的第二个名为PreferencesViewController
的viewcontroller中,我有一个按钮,必须在我的主ViewController中更改一些值。但它没有......
我在我的PreferencesViewController.h
中设置了一个委托协议,就像我在Stack Overflow上的几个例子中看到的那样(是的,我确实谷歌了;))。
我还将PreferencesViewController.h
文件导入到我的主ViewController中,并且我告诉viewcontroller是委托人:<PreferencesViewControllerDelegate>
我还在我的主ViewController实现中实现了该方法。但是当我按下按钮时,不会调用此方法。我在我的IBAction中实施了[self.delegate methodExample];
我已经阅读了很多关于设置委托的内容。我在哪里需要这样做?我是否需要创建和分配/初始化PreferenceViewController
的实例?我尝试了这个,然后告诉实例instance.delegate = self
,但这也不起作用......
希望有人可以帮助我!
答案 0 :(得分:1)
你是否需要设置委托是正确的。使用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;系统调用此方法,以便在显示新视图控制器之前对其进行任何连接。