OStack程序员社区-中国程序员成长平台

标题: iphone - 没有从另一个 View Controller 调用委托(delegate),尝试了一切 [打印本页]

作者: 菜鸟教程小白    时间: 2022-12-12 15:45
标题: iphone - 没有从另一个 View Controller 调用委托(delegate),尝试了一切

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

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

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

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

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

希望有人能帮帮我!



Best Answer-推荐答案


您是正确的,您需要设置委托(delegate)。使用 segue 时最容易做到这一点的地方是在源 View Controller (本例中为 ViewController)中使用 prepareForSegue:sender: 方法。传递给此方法的 segue 对象具有对目标 View Controller 的引用;你可能想做这样的事情:

- (void)prepareForSegueUIStoryboardSegue *)segue senderid)sender {
    if ([segue.identifier isEqualToString"Your preferences segue identifier"]) {
        PreferencesViewController *preferencesViewController = 
segue.destinationViewController;
        preferencesViewController.delegate = self;
    }
}

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

关于iphone - 没有从另一个 View Controller 调用委托(delegate),尝试了一切,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19478591/






欢迎光临 OStack程序员社区-中国程序员成长平台 (https://ostack.cn/) Powered by Discuz! X3.4