如何处理backBarButtonItem?

时间:2011-09-14 07:18:20

标签: ios uinavigationcontroller pushviewcontroller popviewcontroller backbarbuttonitem

我在所有应用程序中差不多完成了这个,但我在navigationController中堆叠了3个视图,我需要从第三个视图跳转到第一个视图。 据我所知,我只能通过viewWillDisappear来做到这一点。但是,如果我尝试这个“跳转”,我将从第二个View获取navigationController面板,其导航按钮会导致异常/错误。

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

2 个答案:

答案 0 :(得分:0)

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

(作为旁注,您正在寻找的行为可能表示导航模式不佳。后退按钮几乎总是按顺序退出导航层次结构。)

答案 1 :(得分:0)

让我们以导航顺序说你的意见堆叠如上 - > 3 - > 2 - > 1。当你处于这个位置时,你可以在你的应用程序代理中有一个标志,当你按下后面的按钮时,你会显示doublePop :(当你提到的顺序出现第三个视图时,你就是这样做了)

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

在视图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];

          }
 }

希望它有所帮助。