从TabBarController到ViewController执行SeeSegue而不隐藏TabBar

时间:2016-06-07 12:35:08

标签: ios xcode swift uiviewcontroller uitabbarcontroller

我用Xcode和Swift创建了一个iOS应用程序。我的Storyboard包含由ViewControllers管理的五个TabBarController

有没有办法从UITabBarControllerUIViewController执行segue而底部的TabBar消失了?

5 个答案:

答案 0 :(得分:1)

实现此目的的最佳方法是将包含在选项卡栏控制器中的视图控制器包装在UINavigationController中。然后在该视图内部,您可以将新视图推送到导航控制器并保留Tab Bar控制器。

查看有关组合视图控制器https://developer.apple.com/library/ios/documentation/WindowsViews/Conceptual/ViewControllerCatalog/Chapters/CombiningViewControllers.html

的链接

答案 1 :(得分:1)

UIWindow root
|
UITabbarController
|
|- UINavigationController - navigationStack
|                                         |- 1 - SomeViewController
|                                         |- ...
|                                         |- ...
|                                         |- N'th...SomeViewController
|- SomeViewController
|- SomeViewController
|- SomeViewController

以上是正确的视图控制器层次结构。尝试以任何其他方式做到这一点并没有任何意义。 在示例中,我仅在导航控制器中嵌入了第一组控制器。它会做你要求的。您可以在任何标签栏位置使用此嵌入。

TabBarController使用VC包含来显示控制器。 您可以像这样嵌入控制器

enter image description here

答案 2 :(得分:1)

<强>解决方案:

我问这个问题是这样处理QuickActions的。这是工作解决方案,没有TabBar消失:https://stackoverflow.com/a/37710017/6423177

答案 3 :(得分:0)

如果您正在查看的视图控制器是标签栏视图控制器,那么您只需要:

let tabVC = storyboard.instantiateViewController("TABIDENTIFIER") as! UITabBarController

这将移动到控制器,就像您点击选项卡一样。

所以,你可以做tabVC.selectedIndex = index(或CustomTabBarController)

然后选择索引div.listing > div.box--content.is--rounded

答案 4 :(得分:0)

如果您正在执行从UITabBarControllerUIViewController的segue,则无法保持TabBar显示,但是如果您从view controller执行segue(即<{1}}的{​​{1}}选项卡不会被隐藏。