如何在我的标签栏 iOS 应用程序上呈现模式 UINavigation 视图?

Posted

技术标签:

【中文标题】如何在我的标签栏 iOS 应用程序上呈现模式 UINavigation 视图?【英文标题】:How do I present a modal UINavigation view over my tab bar iOS app? 【发布时间】:2013-06-11 00:30:31 【问题描述】:

这是我调用的代码,用于在整个标签栏应用上弹出导航控制器:

LoginViewController *logController = [[LoginViewController alloc] initWithNibName:@"LoginViewController" bundle:nil];
EditNavController *navController = [[EditNavController alloc] initWithRootViewController:logController];
[self.navigationController presentModalViewController:navController animated:NO];

我在日志中收到以下警告:

Warning: Attempt to present <EditNavController: 0xa95b980> on <MyTabController: 0x1152fd60> whose view is not in the window hierarchy!

代码有效,但我想以正确的方式执行此操作,因此不会出现此警告。

我该如何解决这个问题?

【问题讨论】:

【参考方案1】:

如果 MyTabController 是一个标签栏控制器,你应该使用

[self presentViewController:navController animated:YES completion:^];

记住 presentModalViewController:animated: 是 deprecated since ios6。我认为问题是你试图在标签栏的导航控制器中显示 viewController,它不在视图层次结构中(因为它没有显示)。相反,您应该在 Tab Bar 控制器(视图层次结构中的 IS)中显示模态视图控制器。 希望对你有帮助!

【讨论】:

谢谢!现在我明白了... 警告:在演示过程中尝试在 上演示 ! - 有任何想法吗?也许在 *** 上打开另一个问题? 可能你展示了两次视图控制器,你能给我们提供更多的代码吗?可能仅使用断点进行调试以查看此代码被调用了多少次可能会有所帮助! 是的,它被调用了两次。固定的。谢谢!现在警告都消失了! 完美!您可以将此答案标记为您的解决方案吗?只是为了赚取一些积分 =)!

以上是关于如何在我的标签栏 iOS 应用程序上呈现模式 UINavigation 视图?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Swift 中呈现 UI 视图并保留 Tab 栏

关闭模式视图后标签栏文本太大

如何从 UI 视图控制器呈现选项卡栏控制器

关闭模态呈现的视图控制器后切换标签栏控制器视图控制器

如何在没有状态栏重叠的情况下在 iOS7 上呈现视图控制器

如何将 UI 元素保留在 UIViewController 及其呈现的 ViewController 之上?