ios - 如何在 ViewController 之间传递委托(delegate)

标签 ios objective-c uiviewcontroller delegates

我有三个 View Controller 。我们称它们为 BaseVC、firstVC 和 secondVC。 FirstVC 由 BaseVC 模态呈现。 SecondVC 由 firstVC 插入。每个 firstVC 和 secondVC 上都有一个按钮。通过单击它们,我想关闭当前的 VC,让 BaseVC 做一些事情。所以我创建了一个协议(protocol),让 BaseVC 服从它,并将 BaseVC 设置为 firstVC 的委托(delegate)。当我从 firstVC 设置 secondVC 的委托(delegate)时,断点显示它成功。但是,当我从 secondVC 调用委托(delegate)时,它显示 _delegate 为 nil。

是不是因为 delegate 总是一个 weak 属性?那么我如何在 View Controller 之间传递委托(delegate)或者是否有任何其他方法可以解决这个问题?

最佳答案

你可以在关闭VC的同时使用postNotification并在baseVC上添加观察者来做一些操作。

您可以在按钮操作中使用 [self.navigationController dismissViewControllerAnimated:YES completion:nil]; 来关闭 View Controller 。

在此之前你需要发布通知[[NSNotificationCenter defaultCenter] postNotificationName:@"NotificaitonBaseVC"object:nil]; 并在baseVC的viewDidLoad方法中添加观察者如下

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(doSomeOperation:) name:@"NotificaitonBaseVC" object:nil];

关于ios - 如何在 ViewController 之间传递委托(delegate),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31399624/

相关文章:

ios - 子 viewController 没有收到 shouldAutorotate 方法调用

ios - UIViewController 连续关闭调用

ios - 我可以从崩溃日志中识别越狱手机吗?

iphone - iOS 重叠 View 和 UIGestureRecognizer

java - WSO2 MDM iPhone 配置文件安装问题(无效的 DER 编码,未完结)

ios - 在 Swift 中初始化结构错误 : Generic parameter could not be inferred

ios - 我如何有效地为 100 多个 View Controller 使用多个 Storyboard?

ios - 如果我在使用 skobbler 导航时缩小,如何停止自动放大

ios - 如何为两个模态视图 Controller 之间的转换设置动画?

iphone - 袖珍 API : how to modify data using callAPIMethod?