【问题标题】:How to present and dismiss modal view from appdelegate?如何从 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 你找到解决方案了吗?

标签: ios objective-c modal-dialog presentmodalviewcontroller


【解决方案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 会出错
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-12-04
  • 2021-12-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-13
  • 1970-01-01
相关资源
最近更新 更多