我有三个视图控制器。我们称它们为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/

10-10 21:10