我在所有应用程序中差不多完成了这个,但我在navigationController中堆叠了3个视图,我需要从第三个视图跳转到第一个视图。 据我所知,我只能通过viewWillDisappear来做到这一点。但是,如果我尝试这个“跳转”,我将从第二个View获取navigationController面板,其导航按钮会导致异常/错误。
P.S。不建议我让leftBarButtonitem看起来像backBarButtonItem。这太难了,我不知道在哪里可以找到合适的图像。
答案 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];
}
}
希望它有所帮助。