使用Xcode 4.2从navcontroller中删除视图然后推送新视图?

时间:2012-03-27 04:30:09

标签: ios xcode uinavigationcontroller

所以我有一个导航控制器,我在屏幕上推出一个视图,一个设置视图,但我想将它从层次结构中删除,所以当新的viewcontroller进入屏幕并按下后退按钮时它会返回它到主菜单。

我试过了:

[self.navigationController popViewControllerAnimated:NO];
[self.navigationController pushViewController:tabBar animated:YES];

但是刚刚弹出viewController并且没有显示新的。

2 个答案:

答案 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]给它一个额外的保留,这样它就不会在运行循环结束时消失。