我有三个 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/