ios - 从分割 View Controller 的详细 View 中调用主视图 Controller

标签 ios swift cocoa-touch uisplitviewcontroller

我有一个带有 3 个选项卡的选项卡栏 Controller ,每个选项卡都嵌入在自己的导航 Controller 中。这很好用,但现在我试图将整个选项卡栏 Controller 放在分割 View Controller 中。

storyboard

问题是 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/

相关文章:

ios - 如何切换 View 和释放先前 View 的内存

ios - Xcode 中的 "app"项目和 "framework"项目有什么区别?

swift - 在 Swift 中返回结构的可变版本

ios - 当 iOS 虚拟键盘在屏幕上时,是否有固定元素在错误位置呈现的已知解决方法?

ios - 如何在 iOS 上触发闹钟以恢复我的广播流? (比如 tuneIn Radio)

xcode - 是否可以在构建 Xcode 项目时转储 AST?

cocoa-touch - willAnimateRotationToInterfaceOrientation 在 vi​​ewWillAppear 之前被调用

ios - 重新排列 iPhone 提醒中的按钮?

iphone - cocos2d Sprite 帧缓存无法更改

ios - 3DTouch 上的 SFSafariViewController 问题(弹出状态)