2012-07-15 62 views
1

我有一个名为UserInfoViewController一个UIViewController类,什么时候会出现,这样的parentViewControoler使用代码:presentModalViewController和initWithRootViewController

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,但我无法一次处理它们。

我试图popToRootViewControllerAnimateddismissModalViewControllerAnimatedsetViewControllers,但他们没有工作。

我也把通知侦听,当需要返回根VC,刚刚张贴通知,并在监听器选择,这样做:

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

然后CD是封闭的,但** BE **仍然存在。

有什么建议吗?

回答

0

我明白了。

只是不考虑流行或解雇它,让它去whit导航控制器的dealloc行动。

所以,当你想从屏幕上删除所有视图控制器,在应用程序委托:

self.window.rootViewController = nil; 

,当你需要再次显示的东西:

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

就是这样。