从当前标签栏控制器显示另一个标签栏控制器

Posted

技术标签:

【中文标题】从当前标签栏控制器显示另一个标签栏控制器【英文标题】:Show another Tab Bar Controller From Current Tab Bar Controller 【发布时间】:2017-01-25 15:18:56 【问题描述】:

我的故事板中有以下视图控制器层次结构。 当我通过选择 tableview 单元格从 Groups 选项卡栏控制器的选项卡 1 执行 show segue 时,会显示 Lists 选项卡栏,但它有 Groups 的选项卡栏而不是它自己的选项卡栏。 当显示列表的控制器时,如何使它显示它自己的标签栏。谢谢

PS:我在层次结构中多了一个标签栏控制器。

【问题讨论】:

在第二个标签栏控制器之前尝试导航控制器 【参考方案1】:

    确保在界面构建器中为“列表选项卡栏控制器”设置情节提要 ID。 (下面的例子tabBar2

    TableViewControllerListTabBarController 之间的segue 命名。 (下面的例子show1

    添加以下代码以准备(用于segue):

    override func prepare(for segue: UIStoryboardSegue, sender: Any?) 
        if segue.identifier == "show1" 
            let _ = navigationController?.popViewController(animated: true)
            let storyborad = UIStoryboard(name: "Main", bundle: nil)
            let tabVC2 = storyborad.instantiateViewController(withIdentifier: "tabBar2") as! UITabBarController
            self.present(tabVC2, animated: true, completion: nil)
        
    
    

【讨论】:

我要推送,不在场。 就像 whatsapp 应用程序在点击聊天时所做的那样。它从标签栏控制器推送一个新的视图控制器。【参考方案2】:

添加此代码

override func viewWillAppear(_ animated: Bool) 
    self.hidesBottomBarWhenPushed = true

override func viewWillDisappear(_ animated: Bool) 
    self.hidesBottomBarWhenPushed = false

在两个选项卡栏控制器的表视图控制器中都有效。现在每个 Tab bar Controller 的 View Controller 都有自己的 tab bar。

【讨论】:

以上是关于从当前标签栏控制器显示另一个标签栏控制器的主要内容,如果未能解决你的问题,请参考以下文章

如何从标签栏控制器执行 show segue?

隐藏标签栏控制器

在不显示标签栏的情况下执行对另一个导航控制器的 segue

如何隐藏带有另一个视图控制器的标签栏视图控制器?

如何从标签栏视图控制器切换到另一个作为导航控制器子视图的视图

在标签栏控制器中从一个 ViewController 到另一个 ViewController ?