2013-10-20 46 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

立即解决了问题!谢啦! –

相关问题