如何在ViewControllers之间传递委托

时间:2015-07-14 06:50:32

标签: ios objective-c uiviewcontroller delegates

我有三个视图控制器。我们称之为BaseVC,firstVC和secondVC。 FirstVC由BaseVC以模态方式呈现。 SecondVC由firstVC推动。每个firstVC和secondVC上都有一个按钮。通过单击它们,我想解除当前的VC并让BaseVC做一些事情。所以我创建了一个协议,让BaseVC服从它,并将BaseVC设置为firstVC的委托。当我从firstVC设置secondVC的委托时,断点显示它成功。但是当我从secondVC调用delegate时,它显示_delegate是nil。

是因为委托始终是weak属性吗?那么我怎么能在View Controllers之间传递委托,还是有其他方法来解决这个问题呢?

1 个答案:

答案 0 :(得分:1)

您可以在解除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];