在我的应用程序中,我有一个基本的导航 Controller 。对于我的所有 View ,除了一个 View , Controller 都正常工作。
但是,特别是对于一个 View ,我希望“后退”按钮不会返回到上一个 View ,而是转到我设置的 View 。特别是它将返回 2 个 View 并跳过一个。
在做了一些研究后,我发现我可以在 View 消失时拦截它,所以我尝试输入代码让它导航到我想要的页面:
- (void)viewWillDisappear:(BOOL)animated {
[super viewWillDisappear:animated];
//i set a flag to know that the back button was pressed
if (viewPushed) {
viewPushed = NO;
} else {
// Here, you know that back button was pressed
mainMenu *mainViewController = [[mainMenu alloc] initWithNibName:@"mainMenu" bundle:nil];
[self.navigationController pushViewController:mainViewController animated:YES];
[mainViewController release];
}
那行不通,所以有人有任何想法吗?
谢谢!!
最佳答案
在您的代码中,您似乎试图将另一个 View Controller 插入堆栈,而不是从中弹出一个额外的项目。
尝试将此作为返回两个级别的代码:
NSArray *vcs = [self.navigationController viewControllers];
[self.navigationController popToViewController:[vcs objectAtIndex:[vcs count]-3];
或者,您可以将后退按钮完全替换为您自己的按钮吗?在你的 View Controller 中:
UIBarButtonItem *item = [[UIBarButtonItem alloc] initWithTitle:@"Back" style:UIBarButtonItemStyleBordered target:self action:@selector(doSomething:)];
self.navigationItem.hidesBackButton = YES;
self.navigationItem.leftBarButtonItem = item;
[item release];
然后您可以编写 doSomething: 方法将两个项目从堆栈中弹出,也许使用我上面发布的代码。
关于iPhone:如何覆盖导航 Controller 中的后退按钮?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4630158/