我有三个视图控制器。我们称之为BaseVC,firstVC和secondVC。 FirstVC由BaseVC以模态方式呈现。 SecondVC由firstVC推动。每个firstVC和secondVC上都有一个按钮。通过单击它们,我想解除当前的VC并让BaseVC做一些事情。所以我创建了一个协议,让BaseVC服从它,并将BaseVC设置为firstVC的委托。当我从firstVC设置secondVC的委托时,断点显示它成功。但是当我从secondVC调用delegate时,它显示_delegate是nil。
是因为委托始终是weak
属性吗?那么我怎么能在View Controllers之间传递委托,还是有其他方法来解决这个问题呢?
答案 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];