在iPad上使用SwiftUI NavigationView在代码中切换侧边栏

时间:2020-10-21 12:30:15

标签: swift swiftui ipados

我试图通过使用 NavigationView 来利用 SwiftUI 2.0 中的内置侧边栏

NavigationView {
   MainView()
   ListView()
   DetailView()
}.navigationBarHidden(true)

但是,由于我想使用自己的自定义后退按钮,因此我隐藏了导航栏,并尝试用代码切换边栏,这是行不通的。 / p>

self.presentationMode.wrappedValue.dismiss()

我已经看到了许多针对 macOS 的解决方案:

NSApp.keyWindow?.firstResponder?.tryToPerform(#selector(NSSplitViewController.toggleSidebar(_:)), with: nil)

但是,谢谢,我似乎找不到与 iPad 相当的产品。

1 个答案:

答案 0 :(得分:0)

所以这不是一个好的长期解决方案,但如果你像我一样并且 100% 需要本地方法来工作,这里是它可以被黑客攻击的方式。使用 https://github.com/siteline/SwiftUI-Introspect 您可以在层次结构中找到正确的视图控制器并设置显示模式。

Text("Some View").introspectViewController { vc in
    guard let splitVC = vc.parent?.parent as? UISplitViewController else {
        return
    }

    splitVC.preferredDisplayMode = .oneBesideSecondary
}

这是BRITTLE,但它有效。