我正在尝试使用 内置侧边栏来自 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/