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

标签 swift swiftui ipados

我正在尝试使用 内置侧边栏来自 SwiftUI 2.0 通过使用 导航 View 像这样:

NavigationView {
   MainView()
   ListView()
   DetailView()
}.navigationBarHidden(true)
但是因为我想用我自己的自定义返回按钮 ,我隐藏了 NavigationBar 并试图 使用代码切换侧边栏 这不起作用。
self.presentationMode.wrappedValue.dismiss()
我已经看到很多的解决方案了macOS :
NSApp.keyWindow?.firstResponder?.tryToPerform(#selector(NSSplitViewController.toggleSidebar(_:)), with: nil)
但我似乎找不到 的等价物iPad , 提前致谢。

最佳答案

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

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

    splitVC.preferredDisplayMode = .oneBesideSecondary
}
这是脆皮但它有效。

关于swift - 在 iPad 上使用 SwiftUI NavigationView 在代码中切换侧边栏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64463568/

相关文章:

swift - 如何以速度拖动和释放对象

swift - 在 MacO 上的 SwiftUI 中打开 FileDialog

swift - SwiftUI-调用UUID()。uuidString id时出错

SwiftUI 侧边栏不记得状态

ios - 为什么调用 super 是此方法的最后一件事而不是第一件事?

java - 通过 JNI 从 Java 使用 CoreBluetooth 时未调用 didDiscoverCharacteristics

swift - 如何从 Firebase 数据库中删除

ios - 想在谷歌日历中添加事件

ios - SwiftUI map 显示注释