从拆分视图控制器的详细视图中调用主视图控制器

时间:2016-01-27 19:18:52

标签: ios swift cocoa-touch uisplitviewcontroller

我有一个带有3个标签的标签栏控制器,每个标签都嵌入在自己的导航控制器中。这很好用,但现在我试图将整个标签栏控制器放在一个拆分视图控制器中。

storyboard

问题是拆分视图控制器的主视图上的导航会隐藏选项卡栏控制器内视图的现有导航。如果我隐藏主视图导航,我将我的标签栏控制器导航回来,但后来我无法返回到主列表。我可以通过编程方式添加按钮,但它只适用于iPad。

navigationItem.leftBarButtonItem = splitViewController?.displayModeButtonItem() 
navigationItem.leftItemsSupplementBackButton = true

我也尝试过使用preferredDisplayMode的各种选项,但同样,这只适用于iPad。它对iPhone没有影响。我可以通过编程方式将自定义按钮添加到选项卡视图控制器中的视图控制器,并从那里调用操作,但我不知道要调用什么操作。我尝试在displayModeButtonItem:

上调用操作
splitViewController?.displayModeButtonItem().action

这也不起作用。我希望能够以编程方式添加回拆分视图控制器在iPhone上添加的后退按钮的行为。

1 个答案:

答案 0 :(得分:0)

我最终废弃了拆分视图控制器,只使用了其他选项卡。但是我在另一个应用程序中遇到了类似的问题,我发现了一种hacky解决方案。我将标签栏控制器本身嵌入导航控制器中。这会导致出现多个导航控制器,因此我在viewWillAppear中进行了检查,以隐藏导致问题的导航控制器。

if let hidden = tabBarController?.navigationController?.navigationBarHidden {
    if hidden == true {
        tabBarController?.navigationController?.navigationBarHidden = false
    }
}

此应用程序有一个拆分视图控制器作为根视图控制器,然后是主视图和详细视图中的标签栏控制器。每个视图都嵌入在导航控制器中,我只是显示或隐藏导航栏,具体取决于我是否有重复。