我有一个名为UserInfoViewController,的UIViewController类,当它出现时,parentViewControoler使用如下代码:
UserInfoViewController *rvc = [[UserInfoViewController alloc] initWithNibName:@"UserInfoViewController" bundle:nil];
rvc.user = user;
UINavigationController *nc = [[UINavigationController alloc] initWithRootViewController:rvc];
nc.navigationBarHidden = YES;
[self presentModalViewController:nc animated:YES];
[rvc release];
[nc release];有时,UserInfoViewController会推送或显示另一个视图控制器,因此堆栈应该如下所示:
Root VC
|
A (push)
|
| - B (present)
|
|-- C (push)
|
|- D (push)
|
|- E (present)B,E是UserInfoViewController.类
问题是,当在视图控制器E上,我想关闭所有的视图控制器并返回到根VC,但我不能立即处理它们。
我试过popToRootViewControllerAnimated,dismissModalViewControllerAnimated,setViewControllers,,但都没有用。
我还在B E中放置了一个通知侦听器,当需要返回根VC时,只需发布通知,而在监听器选择器中,请执行以下操作:
[self.navigationController popToRootViewControllerAnimated:NO];
[self.presentingViewController dismissModalViewControllerAnimated:NO];然后C D是封闭的,但是** B*仍然存在。
有什么建议吗?
发布于 2012-07-16 13:10:19
这样啊,原来是这么回事。
只要不考虑pop或忽略它,就让它与导航控制器的去分配行动。
因此,当您想从屏幕中移除所有视图控制器时,在app委托中:
self.window.rootViewController = nil;当你需要再次展示一些东西时:
navigationController = [[UINavigationController alloc] init];
navigationController.navigationBarHidden = YES;
self.window.rootViewController = navigationController;
[self.window makeKeyAndVisible];就这样。
https://stackoverflow.com/questions/11492680
复制相似问题