我有一个名为 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上时,我想关闭所有的viewcontrollers并返回 Root VC ,但我无法立即处理它们。
我尝试了 popToRootViewControllerAnimated , dismissModalViewControllerAnimated , setViewControllers ,但没有一个正常工作。
我还在 B E 中放置了一个通知监听器,当需要返回Root VC时,只需发布该通知,并在监听器选择器中执行:
[self.navigationController popToRootViewControllerAnimated:NO];
[self.presentingViewController dismissModalViewControllerAnimated:NO];
然后 C D 关闭,但** B E **仍在那里。
有什么建议吗?
答案 0 :(得分:0)
我明白了。
只是不要考虑使用流行音乐或将其解散,让它进入导航控制器的行动。
因此,当您要从屏幕中删除所有视图控制器时,请在app delegate:
中 self.window.rootViewController = nil;
当你需要再次展示时:
navigationController = [[UINavigationController alloc] init];
navigationController.navigationBarHidden = YES;
self.window.rootViewController = navigationController;
[self.window makeKeyAndVisible];
那就是它。