我有三个视图控制器。我们称它们为BaseVC,firstVC和secondVC。 FirstVC由BaseVC模态表示。 SecondVC由firstVC推动。每个firstVC和secondVC上都有一个按钮。通过单击它们,我想关闭当前的VC,然后让BaseVC做一些事情。因此,我创建了一个协议,让BaseVC遵守它,并将BaseVC设置为firstVC的委托。当我从firstVC设置secondVC的委托时,断点显示它成功。但是,当我从secondVC调用委托时,它显示_delegate为nil。
是否因为委托始终是weak
属性?那么我如何在视图控制器之间传递委托,或者还有其他方法可以解决此问题?
最佳答案
您可以在关闭VC时使用postNotification,并在baseVC上添加观察者以执行某些操作。
您可以在按钮操作中使用[self.navigationController dismissViewControllerAnimated:YES completion:nil];
来关闭视图控制器。
在此之前,您需要发布通知[[NSNotificationCenter defaultCenter] postNotificationName:@"NotificaitonBaseVC" object:nil];
并将观察者添加到baseVC的viewDidLoad方法中,如下所示
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(doSomeOperation:) name:@"NotificaitonBaseVC" object:nil];
关于ios - 如何在ViewControllers之间传递委托(delegate),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31399624/