通过呈现新的视图控制器viewWillDisappear on parent被触发,我取消订阅事件
在我的主视图控制器上,我有一个按钮,显示另一个视图控制器,其中一些设置可以更改:
PresentViewController (new UINavigationController(anotherViewController), true, null);
对于解除anotherViewController ,父应该负责。 我还必须知道某些事情是否已经改变(保存)。 因此我使用事件。
我正在我的父视图控制器上的viewWillAppear
附加事件处理程序
anotherViewController.DismissMe += CancelEventHandler; anotherViewController.SaveFilter += SaveEventHandler;
并在viewWillDisappear
我取消订阅它
anotherViewController.DismissMe -= CancelEventHandler; anotherViewController.SaveFilter -= SaveEventHandler;
由于在显示新视图控制器时会触发viewWillDisappear
,因此我会自动取消订阅事件。 当我想在另一个ViewController中触发事件时我不能,因为没有人订阅我的事件。
我必须取消订阅事件,否则video控制器永远不会被释放。
我该如何解决这种情况?
我目前的解决方案如下所示:
在我呈现新的视图控制器之前,我正在订阅取消和保存的事件(自定义创建的事件)。 因为当呈现的视图控制器关闭或保存操作完成时,呈现视图控制器获取此事件(取消,保存),所以当我检索其中一个时,我删除对此事件的订阅(取消,保存)。 事件处理程序本身的Id est我取消订阅事件。
有了这个,我应该确保我只订阅一次,并在需要时也取消订阅。
有更多的方法,可以在我的问题的评论中找到。