iphone - 委托(delegate)没有从另一个 View Controller 调用,尝试了一切

标签 iphone ios objective-c delegates viewcontroller

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

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

我还导入了 PreferencesViewController.h文件到我的主 ViewController,我还告诉 viewcontroller 是委托(delegate):<PreferencesViewControllerDelegate>

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

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

希望有人能帮帮我!

最佳答案

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

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

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

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

相关文章:

iphone - 使用 AppDelegate 进行数据操作和处理是一个好习惯吗?

objective-c - 每次需要访问特定索引处的元素时是否可以重新排序数组?

ios - 使用 WatchOS App 时未调用 viewDidLoad

iphone - 为什么这些 "member"变量表现得像静态变量?

iphone - TableView :didSelectRowAtIndexPath: call to current-view Parser delegates

iOS 后台位置跟踪在测试设备上失败

iOS Objective-C 如何绘制只有 'warm colors' 的色轮?

objective-c - 从 Cocos2D 的 Sprite 表中删除 Sprite 时出错

iphone - 应用程序在后台崩溃,而蓝牙连接长时间丢失

ios - Web 请求后调用时 UIButton 不更新