这个问题之前已经有人问过,但我能找到的回答都是2009年的,不适用于我的问题。让我再重申一下问题。
我有一个UINavigationController
,它会产生并将许多不同的UIViewController
推入其堆栈中。其中一个处理一些需要在该特定VC弹出堆栈时保存的Core Data操作。不要关注Core Data部分,重点在于弹出。
如何挂钩到UIViewController
即将从堆栈中弹出的时刻?
- 我希望能找到某种委托方法,但找不到。
UINavigationControllerDelegate
协议非常简洁。 - 然后我开始考虑使用
viewWillDisappear
,但是如果另一个视图被推入堆栈上,那么也会调用该方法,因此它不提供正确的时机。 - 这篇2009年的回答文章选择查看我们要“弹出到”的视图控制器的
viewWillAppear
,但由于该调用没有参考需要进行检查的VC,因此这是不令人满意的,并且会引入一种不利于生产的依赖关系(该VC由多个NC使用)。 - 另一个2009年的回答文章选择子类化UINavigationController并重写popViewControllerAnimated:方法。或者使用VC的dealloc。我的直觉告诉我这不能成为解决方法。
- 最后有一个来自2011年3月的问题,但没有人关心它。
这让我陷入了目前不满意的状态。有没有人有更好的解决方案来找到您的UIViewController从UINavigationController的堆栈中弹出的时刻?
祝好,
EP.