如何可靠地检测到UIViewController已被关闭

Bbx*_*Bbx 5 uiviewcontroller dismiss ios xamarin

当关闭ViewController时,我需要做一些事情,即:

  • 当按下“返回”时
  • 当父项调用popToRootViewController时(如果在UINavigationController中)
  • 当父级调用了DismissViewController时(如果显示)

例如,我需要退订事件,或者放弃呈现的警报等。

当popToRootViewController的父级调用popToRootViewController时,不会调用ViewWillDisappear,因此不起作用。

WillMoveToParentViewController仅适用于View Controller包含

Dealloc不好,因为只有在收集垃圾时才这样做。我无论如何都在使用C#Xamarin,它在那儿行不通。

ViewDidUnload不再使用,并且从此不再使用

ViewController本身不应该关心它的显示方式,因此我们如何确定何时将其关闭?

这似乎是一个重要的基本要求。例如,如何在没有此情况的情况下取消订阅模型中的事件?

这是一个类似的问题,但没有好的答案:

您可以检测到何时关闭或弹出UIViewController吗?

Jor*_*rke -1

使用 UINavigationController 时,可以通过 UIViewController(或等效)子类对象上的 NavigationController 属性来使用它。

ViewWillDisappear(bool animated)ViewDidDisappear(bool animated)当新的 UIViewController 加载到 UINavigationController 堆栈上时,将调用and

如果您使用 Xamarin Studio 中的情节提要功能,这可能会有所帮助,因为 NavigationController->UIViewController 关系是直观表示的。

如果您遇到更多问题,请发布示例代码,以便社区进一步审查。