gpt4 book ai didi

c# - 通过呈现新的 View Controller viewWillDisappear 在我取消订阅事件的地方被触发

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:58:10 26 4
gpt4 key购买 nike

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

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

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

我在父 View Controller 的 viewWillAppear 中附加事件处理程序

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

viewWillDisappear 中我取消订阅了

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

因为 viewWillDisappear 在呈现新的 View Controller 时被触发,所以我自动取消订阅事件。当我想在 anotherViewController 中触发事件时,我做不到,因为没有人订阅我的事件。

我必须取消订阅事件,否则 View Controller 永远不会被释放。

我该如何解决这种情况?

最佳答案

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

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

这样就可以确保我只订阅一次,并且在需要时我也会取消订阅。

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

关于c# - 通过呈现新的 View Controller viewWillDisappear 在我取消订阅事件的地方被触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32117567/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com