如何处理按下的backBarButtonItem



我几乎在所有应用程序中都这样做了,但是我有3个视图堆叠在navigationController中,我需要从第三个视图跳转到第一个视图。据我所知,我只能通过viewWillDisappear来做到这一点。但是如果我尝试这个"跳转",我将从第二个视图中获得navigationController面板,其中包含导致异常/错误的导航按钮。

注:不要建议我让leftBarButtonitem看起来像backBarButtonItem。这太难了,我不知道在哪里可以找到合适的图像

据我所知,您别无选择,只能提供自己的UIBarButtonItem。默认情况下,不允许中断UINavigationController的工作方式。也就是说,您不能覆盖后退按钮的行为。您必须提供自定义栏按钮项,并将其设置为导航项的左栏按钮项。

(作为旁注,您正在寻找的行为类型可能是糟糕的导航模式的指示。返回按钮应该总是从导航层次结构中按顺序返回。

假设在导航顺序中,视图的堆叠顺序为top -> 3 -> 2 -> 1。当你在这个位置时,你可以在你的应用程序委托中有一个标志,显示当按下backButton时你将双击,如下所示:(当第三个视图按照你提到的顺序出现时,你就会这样做)

MyApplicationDelegate * del = [[UIApplication sharedApplication]delegate];
del.doublePopEnabled = YES;
[del release];

In view 2:

- (void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];
         MyApplicationDelegate * del = [[UIApplication sharedApplication]delegate];
         if(del.doublePopEnabled){
           //Asssuming you have a reference to your navigationController in your view 2
           del.doublePopEnabled = NO;
           [del.release]
           //Use animated as no if you don't want user to see doublePopping.
           self.navigationController popViewControllerAnimated:NO];
          }
 }

希望能有所帮助。

相关内容

  • 没有找到相关文章

最新更新