通过在 parent 上呈现新的视图控制器 viewWillDisappear 在我取消订阅事件的地方被触发

Through presenting new view controller viewWillDisappear on parent is triggered where I unsubscribe from the events

在我的主视图控制器上,我有一个显示另一个视图控制器的按钮,可以在其中更改一些设置:

PresentViewController (new UINavigationController(anotherViewController), true, null);

对于 anotherViewController 的解雇,parent 应该负责。我还必须知道是否有什么改变(保存)。因此我使用事件。

我将 viewWillAppear 中的事件处理程序附加到我的 parent 视图控制器

anotherViewController.DismissMe += CancelEventHandler;
anotherViewController.SaveFilter += SaveEventHandler;

并且在 viewWillDisappear 我取消订阅它

anotherViewController.DismissMe -= CancelEventHandler;
anotherViewController.SaveFilter -= SaveEventHandler;

因为 viewWillDisappear 在呈现新的视图控制器时被触发,所以我自动取消订阅事件。当我想触发 anotherViewController 中的事件时,我不能,因为没有人订阅我的事件。

我必须取消订阅事件,否则视图控制器永远不会被释放。

我该如何解决这种情况?

我当前的解决方案如下所示:

在展示新的视图控制器之前,我订阅了取消和保存事件(自定义创建的事件)。因为呈现的视图控制器在呈现的视图控制器关闭或完成保存操作时获取此事件(取消,保存),所以当我检索其中一个事件时,我删除了对此事件的订阅(取消,保存)。 Id est 在事件处理程序本身中,我正在取消订阅该事件。

这样可以保证我只订阅一次,需要的时候我也会退订。

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