在单击后退按钮之前处理事件

时间:2010-09-22 13:07:24

标签: iphone uinavigationcontroller uinavigationbar

有没有办法找出是否针对特定视图点击了后退按钮(导航栏)?如果是的话怎么样?

2 个答案:

答案 0 :(得分:0)

首先,我自己没有尝试过。 我不知道如何拦截按钮上的点击。 “可能”的工作原理如下:有UINavigationBarDelegate,其中包含navigationBar:shouldPopItem:event。在从navigationBar的堆栈中删除navigationItem之前调用此事件,因此如果您处理此事件,您可能可以执行任何要归档的操作。

答案 1 :(得分:0)

“之前处理事件”建议您在用户离开视图之前清理或保存状态。在这种情况下,我将使用viewWillDisappear:或viewDidDisappear:。如果您需要区分导航和导航“前进”(例如,推送VC或呈现模态VC),您可能能够执行以下操作:

-(void)viewDidDisappear:(BOOL)animated
{
  if (!self.parentViewController)
  {
     // back button pressed/modal VC dismissed/etc, hopefully
  }
}

我没有对此进行过测试,但我的理解是,在改变VC层次结构之前调用“Will”方法,然后调用“Did”方法。

如果你正在保存状态,你还应该处理UIApplicationWillEnterBackgroundNotification。