2

我有 2 个视图控制器,它们之间有一个 segue。我的主视图控制器称为ViewController. 在我的第二个视图控制器中,PreferencesViewController我有一个按钮,它必须更改我的主视图控制器中的一些值。但它不...

我已经设置了一个委托协议,PreferencesViewController.h就像我在 Stack Overflow 上的一些示例中看到的一样(是的,我用谷歌搜索过它;))。

我还将PreferencesViewController.h文件导入到我的主 ViewController 中,同时我告诉 viewcontroller 是委托:<PreferencesViewControllerDelegate>

我还在主 ViewController 的实现中实现了该方法。但是当我按下按钮时,这个方法不会被调用。我[self.delegate methodExample];在我的 IBAction 中实施

我已经阅读了很多关于设置委托的内容。我需要在哪里执行此操作?我需要创建和分配/初始化我的实例PreferenceViewController吗?我试过这个,然后告诉实例instance.delegate = self,但这也不起作用......

希望有人可以帮助我!

4

1 回答 1

1

你是正确的,你需要设置委托。使用 segue 时最容易做到这一点的地方是在源视图控制器(ViewController在本例中为 )中使用 heprepareForSegue:sender:方法。传递给此方法的 segue 对象具有对目标视图控制器的引用;您可能想要执行以下操作:

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

由于您使用的是 segue,系统正在为您执行新视图控制器的分配/初始化;系统调用此方法让您在新视图控制器显示之前对其进行任何连接。

于 2013-10-20T14:40:12.613 回答