我有一个带有 3 个选项卡的选项卡栏 Controller ,每个选项卡都嵌入在自己的导航 Controller 中。这很好用,但现在我试图将整个选项卡栏 Controller 放在分割 View Controller 中。
问题是 Split View Controller 的主视图上的导航隐藏了选项卡栏 Controller 内 View 的现有导航。如果我隐藏主视图导航,我会恢复标签栏 Controller 导航,但无法返回主列表。我可以通过编程方式重新添加该按钮,但它仅适用于 iPad。
navigationItem.leftBarButtonItem = splitViewController?.displayModeButtonItem()
navigationItem.leftItemsSupplementBackButton = true
我还尝试过使用 preferredDisplayMode
的各种选项,但同样,这只适用于 iPad。它对 iPhone 没有影响。我可以以编程方式将自定义按钮添加到选项卡 View Controller 内的 View Controller ,并从那里调用操作,但我不知道要调用什么操作。我尝试调用 displayModeButtonItem:
splitViewController?.displayModeButtonItem().action
这也不起作用。我希望能够以编程方式添加回分割 View Controller 在 iPhone 上添加的后退按钮的行为。
最佳答案
我最终放弃了分割 View Controller ,只使用花药选项卡。然而,我在另一个应用程序中遇到了类似的问题,我找到了一种黑客解决方案。我将标签栏 Controller 本身嵌入到导航 Controller 中。这会导致出现多个导航 Controller ,因此我在 viewWillAppear 中进行了检查以隐藏导致问题的导航 Controller 。
if let hidden = tabBarController?.navigationController?.navigationBarHidden {
if hidden == true {
tabBarController?.navigationController?.navigationBarHidden = false
}
}
此应用程序有一个分割 View Controller 作为 Root View Controller ,然后在主视图和详细 View 中都有选项卡栏 Controller 。每个 View 都嵌入在导航 Controller 中,我只是根据是否有重复项来显示或隐藏导航栏。
关于ios - 从分割 View Controller 的详细 View 中调用主视图 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35046148/