以前曾问过这个问题,但我可以找到的答案是2009年,不适合我的问题.让我重申这个问题.
我有一个UINavigationController,它将大量不同的UIViewControllers推送到堆栈上.当一个特定的VC从堆栈中弹出时,需要保存一些Core Data操作的其中一个.不要专注于Core Data部分,它是关于弹出的.
UIViewController将从堆栈中弹出的时刻如何挂钩?
>我希望有一种代理方法,但找不到. UINavigationControllerDelegate协议非常稀疏.
>然后,我开始考虑使用viewWillDisappear,但是如果另一个视图被推入堆栈,那么也会调用它,因此它不提供正确的时刻.
> This answered question,from 2009,选择查看我们“弹出”的视图控制器的viewWillAppear,但是由于该调用没有参考需要进行检查的VC,这是不令人满意的,并将引入一个级别的依赖性是反效果的(VC由几个NC使用).
> Another answered question,also from 2009,选择子类UINavigationController并重写popViewControllerAnimated:方法.或者使用VC的dealloc.我的直觉告诉我,不能走路.
>最后有one last recent question from march 2011,但没有人在乎它来回答.
这让我感到目前的不满意的心态.有没有人有更好的@R_301_463@案来找到你的UIViewController从UINavigationController的堆栈弹出的那一刻?
干杯,
EP.
解决方法
viewWillDisappear是适当的委托.如果要确定当前视图是否正在弹出或正在推送新的视图,则需要在此方法中添加逻辑.这已经在这里回答了 –
viewWillDisappear: Determine whether view controller is being popped or is showing a sub-view controller