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

在iPad上使用SwiftUI NavigationView在代码中切换侧栏,swift,swiftui,ipados,Swift,Swiftui,Ipados,我试图通过使用导航视图来利用SwiftUI 2.0中的内置侧栏,如下所示: NavigationView { MainView() ListView() DetailView() }.navigationBarHidden(true) 但由于我想使用自己的自定义后退按钮,因此我隐藏了导航栏,并尝试用代码切换侧栏,但代码不起作用 self.presentationMode.wrappedValue.dismiss() 我已经看到了许多针对macOS的解决方案: NSApp.k

我试图通过使用导航视图来利用SwiftUI 2.0中的内置侧栏,如下所示:

NavigationView {
   MainView()
   ListView()
   DetailView()
}.navigationBarHidden(true)
但由于我想使用自己的自定义后退按钮,因此我隐藏了导航栏,并尝试用代码切换侧栏,但代码不起作用

self.presentationMode.wrappedValue.dismiss()
我已经看到了许多针对macOS的解决方案:

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

但我似乎找不到与iPad相当的解决方案,提前谢谢。

所以这不是一个好的长期解决方案,但如果你和我一样,100%需要本地方法来工作,这里就介绍如何破解。使用可以在层次结构中找到右视图控制器并设置显示模式

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

    splitVC.preferredDisplayMode = .oneBesideSecondary
}

这是易碎的,但它可以工作。

我也有类似的问题,林克。最后,我决定制作自己的自定义侧边栏,这并不理想,但对我来说是最好的解决方案。谢谢,如果下周我还没有得到任何解决方案,我也可以自己实现它。