在iOS4中弹出视图控制器时收到通知

epo*_*gee 10 notifications stack objective-c uiviewcontroller uinavigationcontroller

之前已经问过这个问题,但我能找到的答案来自2009年,并不适合我的问题.让我重申这个问题.

我有一个UINavigationController产生并将许多不同的UIViewControllers推到其堆栈上.其中一个处理一些核心数据操作,当一个特定的VC从堆栈中弹出时需要保存.不要专注于核心数据部分,而是关于弹出.

如何挂钩UIViewController将从堆栈弹出的那一刻?

  • 我希望某种委托方法,但找不到它.该UINavigationControllerDelegate协议非常稀疏.
  • 然后我就开始使用的思维viewWillDisappear,但一个是如果另一种观点则被推又称堆栈,所以它并没有提供恰当的时机.
  • 这个回答的问题,从2009年开始,选择viewWillAppear查看我们正在"弹出"的视图控制器,但由于该调用没有引用需要进行检查的VC,这是不能令人满意的引入一种适得其反的依赖性(VC由几个NC使用).
  • 另一个回答的问题,也是从2009年开始,选择子类UINavigationController并重写popViewControllerAnimated:方法.或者使用VC的dealloc.我的直觉告诉我,这不可能是要走的路.
  • 最后是2011年3月的最后一个问题,但没有人愿意回答.

这使我处于目前不满意的状态.有没有人有更好的解决方案来找到你的UIViewController弹出UINavigationController的堆栈的那一刻?

干杯,
EP.

Jas*_*ary 9

viewWillDisappear是适当的代表.如果要确定是弹出当前视图还是正在推送视图,则需要在此方法中添加逻辑.这已在此处得到解答 - viewWillDisappear:确定是否正在弹出视图控制器或正在显示子视图控制器

  • 我刚看了你的答案.它看起来不错,但对于真正需要的东西来说有点过于复杂.我建议这可以更清洁:`if(![self.navigationController.viewControllers containsObject:self]){// POPPED!}` (9认同)

归档时间:

查看次数:

6577 次

最近记录:

12 年,9 月 前