如何从 appdelegate 呈现和关闭模态视图?
Posted
技术标签:
【中文标题】如何从 appdelegate 呈现和关闭模态视图?【英文标题】:How to present and dismiss modal view from appdelegate? 【发布时间】:2013-03-20 11:13:06 【问题描述】:我在我的应用程序的 appdelegate 中,在 didFinishLaunchingWithOptions 中,我想在标签栏控制器上加载一个模式导航控制器(我没有“导航控制器”类,但故事板中只有一个导航控制器使用“segue”导航控制器的视图控制器)。然后我想回到标签栏控制器。 在 didFinishLaunchingWithOptions 中,我使用了这段代码,并且模态导航控制器工作正常:
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard_iPhone" bundle:nil];
UINavigationController *loginController = [storyboard instantiateViewControllerWithIdentifier:@"Login Controller"];
self.window.rootViewController = loginController;
但是当在我的模态视图控制器中“segue”导航控制器时,我尝试使用以下代码返回标签栏:
[self dismissViewControllerAnimated:YES completion: nil];
什么都没有出现。怎么了?谢谢你。
【问题讨论】:
[self.navigatorcontroller presentviewController: Controller]; 您的问题更多是关于我如何解雇UINavigationController
这并不是真正的呈现。我说的对吗?
是的,但问题还在于我使用“根视图控制器”而不是模式转换加载导航控制器。我想在标签栏控制器上加载一个模态导航控制器,这样以后我可以使用dismissViewController
我知道这是旧的,但是@user2136333 你找到解决方案了吗?
【参考方案1】:
这就是我们如何设置哪个视图控制器需要成为 rootViewController(需要显示的 firstViewController)。
mainViewController = [[[MainViewController alloc] initWithNibName:@"MainViewController" bundle:nil] autorelease];
self.window.rootViewController = mainViewController;
【讨论】:
好的,但是我怎样才能解除你的 rootViewController 并返回 tabBarController? 不可能。但是您可以将 tabBarcontroller 设置为 rootView 控制器,并从 tabBarController 呈现另一个视图控制器。或者您可以从 rootViewController 呈现 tabBarController。 或者您可以通过分配'mainViewController.view = tabBarController.view'将rootViewController的视图更改为tabBarController的视图【参考方案2】:使用
[self.navigatorcontroller presentviewController: Controller];
呈现视图控制器
您可以通过
将其关闭[self dismissViewControllerAnimated:YES completion: nil];
【讨论】:
在 AppDelegate 中如果我使用 self.navigatorcontroller 会出错以上是关于如何从 appdelegate 呈现和关闭模态视图?的主要内容,如果未能解决你的问题,请参考以下文章
从 uitabbarController 视图中关闭模态视图