通过呈现新的视图控制器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我取消订阅事件。

有了这个,我应该确保我只订阅一次,并在需要时也取消订阅。

有更多的方法,可以在我的问题的评论中找到。

Interesting Posts