从堆栈中移除视图控制器和导航项

3

我有一个UINavigationController,在当前的顶部控制器中,我想要推入一个新的控制器并移除当前的VC。简而言之,过程如下:

[ViewController A]
[ViewController B]

to

[ViewController A]
[ViewController B]
[ViewController C]

为了

[ViewController A]
[ViewController C]

我在VC B中完成此操作的方法如下:

[self.navigationController pushViewController:VCC animated:YES];
[self removeFromParentViewController];

除了导航栏堆栈仍然将VC B的标题/返回按钮夹在A和C之间外,一切都正常。

我该如何从UINavigationController堆栈中删除一个VC,并更新navigationItem堆栈?

1个回答

3

导航项未显示,原因是放置/移除视图控制器的“样式”不正确。

请在向navigationcontroller推送新视图控制器之前两次使用[[self navigationController] popViewControllerAnimated:NO],而不是使用[self removeFromParentViewController]

另一种方法是:

NSMutableArray *VCs = [self.navigationController.viewControllers mutableCopy];
[VCs removeObjectAtIndex:[VCs count] - 2];
self.navigationController.viewControllers = VCs;

看一下这个链接:如何从推送的视图控制器中弹出下面的视图控制器?

试一试吧。


感谢回复。两个弹出和一个推送的方法不起作用;两个弹出都发生了,但推送从未发生。NSMutableArray方法“有效”,因为VC和navBar同步,但应用程序会抱怨“以意外状态完成导航转换。导航栏子视图树可能会损坏。”好消息是它似乎没有被破坏,所以我想我可以接受这个! - Thompson

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接