2

我想从 UINavigationController 中删除所有视图控制器。所以我正在使用这段代码。

for (UIViewController* controller in navigationController.viewControllers) {
[controller removeFromParentViewController];
}

之后,我创建了一个新的 viewController 并推送它。

 UIViewController* newVC=[[UIViewController alloc] init]; 
 [navigationController pushViewController:newVC animated:YES];

问题是所有视图控制器都完美弹出并添加了 newVC,但是在推送 newVC 时,导航栏正在获得一个后退按钮和 newVC 的标题。单击后退按钮时,它会动画到 oldVC 的导航栏,标题为 oldVC,我已经在上面的循环中删除了该标题;

4

2 回答 2

0

removeFromParentViewController是一种UIViewController方法,所以很正常,与它无关UINavigationBar

在这种情况下,UINavigationControllerpopViewControllerAnimated:方法会为您处理该removeFromParentViewController部分以及导航栏。

你可以直接更新整个数组viewControllersUINavigationController调用`setViewControllers:animated:

请参阅在 navigationController 中替换 rootView

于 2013-09-10T14:57:13.707 回答
0

[navigationController setViewControllers:[NSArray arrayWithObject:newVC]];

于 2013-09-10T15:17:42.163 回答