如何将导航控制器嵌入到标签栏控制器

Posted

技术标签:

【中文标题】如何将导航控制器嵌入到标签栏控制器【英文标题】:How to embed in Navigation Controller to a tabbar controller 【发布时间】:2016-06-17 10:25:13 【问题描述】:

我的初始视图控制器是一个标签栏控制器。我想让标签栏位于顶部的底部(我已经使用 self.tabBarController?.tabBar.frame 完成了)。我想让导航栏出现在标签栏上方。任何人都可以请我这样做

【问题讨论】:

我不确定这是不是个好主意。因为我们都希望它在底部。 我建议,不要那样做。在导航栏下方创建自己的栏(添加为导航栏的子视图)。 【参考方案1】:

UITabBar 应始终位于屏幕底部。 有类似于 android 选项卡的第三方实现,可能是您正在寻找的。​​p>

以https://github.com/HighBay/PageMenu 为例。

【讨论】:

【参考方案2】:

您可以使用这些代码之一来实例化您的视图控制器

let VC1 = self.storyboard?.instantiateViewControllerWithIdentifier("storyboardID") as! DemoViewController

let VC2 = YourViewController() 

如果您的视图控制器在接口 bulider 中定义,则使用第一个 else ,使用第二个。

现在为 tabBarController 构造视图数组,我将 NavigationController 作为元素,rootViewController 是我实例化的 VC。

let tab1 = UINavigationController(rootViewController: VC1)

let tab2 = UINavigationController(rootViewController: VC2)

这样描述 tabBarItem 图像

tab1.tabBarItem = UITabBarItem(title: nil, image: UIImage(named: "unselectedImage")?.imageWithRenderingMode(UIImageRenderingMode.AlwaysOriginal), selectedImage: UIImage(named: "selectedImage")?.imageWithRenderingMode(UIImageRenderingMode.AlwaysOriginal)) 

最后描述一下tabBar数组

self.viewControllers = [tab1,tab2]  //This will create tabBar with 2 tabs

您的导航控制器将显示在顶部。您可以自定义导航栏。为此,请参阅this。

另外不要忘记将您的 tabBarController 设置为 AppDelegate 中的 rootViewController。否则,您将违反 Apple 准则。

希望这会有所帮助。 :)

【讨论】:

【参考方案3】:

我的建议是制作 viewcontroller 并使用 UISegmentController 来执行导航栏下方的标签栏操作..

谢谢

【讨论】:

以上是关于如何将导航控制器嵌入到标签栏控制器的主要内容,如果未能解决你的问题,请参考以下文章

Swift:以编程方式嵌入标签栏控制器后,导航栏消失

以模态方式将嵌入在导航控制器中的视图控制器与标签栏控制器分开

如何将自定义导航栏链接到导航控制器?

在标签栏控制器中嵌入导航控制器会更改视图控制器的安全区域

在标签栏控制器中访问多个导航控制器

从标签栏控制器跳回导航控制器 - swift 4