1

我有一个名为UserInfoViewController的 UIViewController 类,当它出现时, parentViewController 使用如下代码:

    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 上时,我想关闭所有视图控制器并返回Root VC,但我无法立即处理它们。

我尝试了 popToRootViewControllerAnimateddismissModalViewControllerAnimatedsetViewControllers,但它们都不起作用。

我还在BE中放置了一个通知侦听器,当需要返回 Root VC 时,只需发布​​该通知,然后在侦听器选择器中执行以下操作:

[self.navigationController popToRootViewControllerAnimated:NO];
[self.presentingViewController dismissModalViewControllerAnimated:NO];

然后CD 关闭,但 ** BE ** 仍然存在。

有什么建议么?

4

1 回答 1

0

我知道了。

只是不要考虑弹出或关闭它,让它去navigationController的dealloc动作。

因此,当您想从屏幕上删除所有视图控制器时,在应用程序委托中:

    self.window.rootViewController = nil;

当你需要再次展示一些东西时:

navigationController = [[UINavigationController alloc] init];
navigationController.navigationBarHidden = YES;
self.window.rootViewController = navigationController;
[self.window makeKeyAndVisible];

而已。

于 2012-07-16T13:10:19.207 回答