首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >presentModalViewController和initWithRootViewController

presentModalViewController和initWithRootViewController
EN

Stack Overflow用户
提问于 2012-07-15 14:23:06
回答 1查看 868关注 0票数 1

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

代码语言:javascript
复制
    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会推送或显示另一个视图控制器,因此堆栈应该如下所示:

代码语言:javascript
复制
Root VC
     |
     A (push)
     |
     | - B (present)
           |
           |-- C (push)
                 |
                 |- D (push)
                     |
                     |- E (present)

B,E是UserInfoViewController.类

问题是,当在视图控制器E上,我想关闭所有的视图控制器并返回到根VC,但我不能立即处理它们。

我试过popToRootViewControllerAnimateddismissModalViewControllerAnimatedsetViewControllers,,但都没有用。

我还在B E中放置了一个通知侦听器,当需要返回根VC时,只需发布通知,而在监听器选择器中,请执行以下操作:

代码语言:javascript
复制
[self.navigationController popToRootViewControllerAnimated:NO];
[self.presentingViewController dismissModalViewControllerAnimated:NO];

然后C D是封闭的,但是** B*仍然存在。

有什么建议吗?

EN

回答 1

Stack Overflow用户

发布于 2012-07-16 13:10:19

这样啊,原来是这么回事。

只要不考虑pop或忽略它,就让它与导航控制器的去分配行动。

因此,当您想从屏幕中移除所有视图控制器时,在app委托中:

代码语言:javascript
复制
    self.window.rootViewController = nil;

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

代码语言:javascript
复制
navigationController = [[UINavigationController alloc] init];
navigationController.navigationBarHidden = YES;
self.window.rootViewController = navigationController;
[self.window makeKeyAndVisible];

就这样。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11492680

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档