关闭模态视图并调用初始视图控制器

Posted

技术标签:

【中文标题】关闭模态视图并调用初始视图控制器【英文标题】:Dismiss modal view and call initial view controller 【发布时间】:2013-04-29 17:29:28 【问题描述】:

这是我的问题。 我有一个标签栏,在最后一个标签中我加载了一个模式视图。当我关闭模式视图时,应用程序会在选项卡栏的最后一个选项卡中返回。但相反,我希望该应用程序返回标签栏的第一个标签(初始视图)。 如果我关闭模态视图,则不考虑我在之后插入的代码(调用初始视图控制器)。你能给我一个解决方案吗?谢谢你。

我使用的代码是:

  [self dismissViewControllerAnimated:YES completion:nil];
  InitialViewController* controller = (InitialViewController*)[self.storyboard instantiateViewControllerWithIdentifier:@"Initial"];
  [self presentViewController:controller animated:NO completion:nil];

【问题讨论】:

“如果我关闭模态视图,我插入的代码(调用初始视图控制器)将不会被考虑在内”嗯,这不是真的,所以你一定做错了什么。为什么不显示您的代码,以便我们就它可能是什么提出建议? 好吧,我错了,考虑了代码,但是我发生了崩溃,错误是:尝试开始从 UINavigationController 到 InitialViewController 的模态转换,而转换已经在进行中。等待 viewDidAppear/viewDidDisappear 知道当前转换已经完成 【参考方案1】:

您所做的不是“返回”到标签栏。相反,您呈现一个完全新的标签栏。现在你有两个标签栏界面。不要那样做。这足以解雇:

[self dismissViewControllerAnimated:YES completion:nil];

要更改标签,您需要引用现有的标签栏控制器(不是一个不同的)。然后你可以说:

[theTabBarController setSelectedIndex:0];

如果您知道当您从模态控制器返回时想要执行此操作,您甚至可以在您呈现模态控制器时执行此操作。

【讨论】:

好的,我明白了,但是如果我使用此代码,我将没有任何效果,并且在关闭后,应用程序会在最后一个选项卡中返回 [self presentViewController:navController animated:NO completion:nil]; UITabBarController tabController = (UITabBarController)[self.storyboard instantiateViewControllerWithIdentifier:@"TabBar"]; [tabController setSelectedIndex:0]; 好的!解决方法是:[self dismissViewControllerAnimated:YES completion:nil]; [self.tabBarController setSelectedIndex:0];

以上是关于关闭模态视图并调用初始视图控制器的主要内容,如果未能解决你的问题,请参考以下文章

从模态视图控制器调用方法

关闭从模态呈现的视图控制器翻转的视图控制器

关闭两个模态视图控制器

如何一次关闭 3 个模态视图控制器?

模态视图控制器,关闭并弹回视图控制器

模态视图不会关闭