我在UINavigationController
...
我有这个层次结构
UINavigationController
|- root controller
|- ViewController A
我在ViewController A
做了一个按钮,然后推送ViewController B
,但我想在添加ViewController A
之前删除ViewController B
因此,在流程
之后,层次结构就是这样的UINavigationController
|- root controller
|- ViewController B
它应该从ViewController A
滑动到ViewController B
,但是如果你按下它,它会返回到root Controller
提前谢谢。
答案 0 :(得分:3)
您应该使用UINavigationController的setViewControllers方法,只需将根和viewController B添加为数组
//get the existing navigationController view stack
NSMutableArray* newViewControllers = [NSMutableArray arrayWithArray:self.navigationController.viewControllers];
//drop the last viewController and replace it with the new one!
ViewControllerB *childController = [[ViewControllerB alloc] initWithNibName:@"ViewControllerB" bundle:nil];
[newViewControllers replaceObjectAtIndex:newViewControllers.count-1 withObject:self];
//set the new view Controllers in the navigationController Stack
[self.navigationController setViewControllers:newViewControllers animated:YES];
答案 1 :(得分:0)
答案 2 :(得分:0)
查看[UINavigationController setViewControllers:animated:]
[self.navigationController setViewControllers:@[rootViewController, viewControllerB] animated:YES];
这应该会产生推送动画。
但说实话:如果你有这样的UI,你最不喜欢首先使用NavigationController,因为这会让用户感到困惑。 UINavigationController实现的比喻非常简单。你真的不想搞砸了。您可能需要查看Apple人机界面指南,然后选择另一种显示您的观点的选项!
答案 3 :(得分:-2)
最好的方法是使用新的ViewController启动navigationController,而不是同时删除和推送..
来自ViewController A的推送,
[self.navigationController initWithRootViewController:ViewControllerB];