gre*_*rey 5 swift swiftui ipados
我正在尝试通过使用NavigationView来利用SwiftUI 2.0 的内置侧边栏,如下所示:
NavigationView {
MainView()
ListView()
DetailView()
}.navigationBarHidden(true)
Run Code Online (Sandbox Code Playgroud)
但由于我想使用自己的自定义后退按钮,因此我隐藏了导航栏并尝试使用不起作用的代码切换侧边栏。
self.presentationMode.wrappedValue.dismiss()
Run Code Online (Sandbox Code Playgroud)
我已经看到了很多针对macOS的解决方案:
NSApp.keyWindow?.firstResponder?.tryToPerform(#selector(NSSplitViewController.toggleSidebar(_:)), with: nil)
Run Code Online (Sandbox Code Playgroud)
但我似乎找不到iPad的同等产品,提前致谢。
所以这不是一个好的长期解决方案,但如果你像我一样并且 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
}
Run Code Online (Sandbox Code Playgroud)
这很脆弱,但很有效。