所以我有一个导航控制器,我在屏幕上推出一个视图,一个设置视图,但我想将它从层次结构中删除,所以当新的viewcontroller进入屏幕并按下后退按钮时它会返回它到主菜单。
我试过了:
[self.navigationController popViewControllerAnimated:NO];
[self.navigationController pushViewController:tabBar animated:YES];
但是刚刚弹出viewController并且没有显示新的。
答案 0 :(得分:3)
您应该尝试按以下方式修改navigationcontrollers视图控制器数组:
[self.navigationController pushViewController:tabBar animated:YES];
NSMutableArray *VCs = [NSMutableArray arrayWithArray: self.navigationController.viewControllers];
[VCs removeObjectAtIndex:[VCs count] - 2];
[self.navigationController setViewControllers: VCs];
也许动画会被打破。如果发生这种情况,您应该将修改了navigationcontroller VC数组的部分移动到显示的VC的viewDidAppear方法。
答案 1 :(得分:0)
问题是,只要调用popViewControllerAnimated:就会释放self。然后推送呼叫发送消息给nil。
您可以先将self.navigationController指定给局部变量,然后使用它来推送和弹出。
或者,它有点像黑客,但在此之前,你可以调用[[self retain] autorelease]给它一个额外的保留,这样它就不会在运行循环结束时消失。