【发布时间】:2015-01-17 00:36:49
【问题描述】:
我需要在 ViewController 被解除时做一些事情,即:
- 按下“返回”时
- 当 popToRootViewController 在 UINavigationController 中被父级调用时
- 当 DismissViewController 被父级调用时
例如,我需要取消订阅事件,或关闭显示的警报等。
当 popToRootViewController 被其父级调用时,ViewWillDisappear 不会被调用,因此不起作用。
WillMoveToParentViewController 仅用于 View Controller 包含
Dealloc 不好,因为只有在垃圾收集时才会这样做。无论如何,我都在使用 c# Xamarin,但它在那里不起作用。
ViewDidUnload 不再被使用,也从来没有用于此
ViewController 本身不应该关心它是如何呈现的,那么我们如何找出它何时被关闭?
这似乎是一个重要的基本要求。例如,如果没有这个,我们如何取消订阅来自模型的事件?
这是一个类似的问题,但没有好的答案:
Can you detect when a UIViewController has been dismissed or popped??
【问题讨论】:
-
也许这会对你有所帮助 - stackoverflow.com/questions/26921227/…
-
建议使用自 ARC 以来我们不使用的 dealloc,并且无论如何在 Xamarin 中都不起作用
-
你告诉谁我们不在 ARC 中使用
-dealloc。是释放资源必不可少的方法,那你在哪里释放delegate呢? -
嗯,好的,在 C# Xamarin 中等效的是 Dispose,但仅在内存被垃圾收集时调用。我真的想做一些事情,比如删除一个呈现的警报(使用 UIAlertController),所以需要立即发生。如果你明白我的意思,垃圾收集可能不会发生很长时间。
-
是的,但是我什么时候可以调用 dispose。我不关心释放内存,这是自动发生的。我需要知道的是 UIViewController 已被解除,所以我可以在 UI 中做一些事情,例如删除警报等
标签: ios uiviewcontroller xamarin dismiss