lcp*_*nix 6 sidebar ipad swiftui
我正在制作一个可以在 iOS 和iPadOS中使用SwiftUI.navigationViewStyle(DoubleColumnNavigationViewStyle())
完美运行的应用程序,但是在 iPad 中,当我使用修饰符时,会出现一个侧边栏,NavigationView
我想知道是否有办法以编程方式关闭侧边栏,通常用户可以通过触摸屏幕左上角的按钮来关闭侧边栏,但这就是用户交互。可以直接用代码关闭侧边栏吗?
发现SwiftUI-Introspect可以用来完成这个要求,但我想在没有外部库的情况下完成它。
这是在iPadOS中重现侧边栏的简单代码:
import SwiftUI
@main
struct MyApp: App {
var body: some Scene {
WindowGroup {
NavigationView {
if UIDevice.current.userInterfaceIdiom == .pad {
Text("Sidebar here")
Text("Content here")
}
}.navigationViewStyle(DoubleColumnNavigationViewStyle())
}
}
}
Run Code Online (Sandbox Code Playgroud)
我尝试使用这段代码并且它有效:
import SwiftUI
struct TestView: View {
static var uiSplitViewController: UISplitViewController? = nil
var body: some View {
NavigationView {
Text("Sidebar")
VStack {
Button(action: {
TestView.uiSplitViewController?.hide(.primary)
}, label: {
Text("Hide")
})
Button(action: {
TestView.uiSplitViewController?.show(.primary)
}, label: {
Text("Show")
})
}
}
}
}
extension UISplitViewController {
open override func viewDidLoad() {
super.viewDidLoad()
if (TestView.uiSplitViewController == nil) {
TestView.uiSplitViewController = self
}
}
}
Run Code Online (Sandbox Code Playgroud)
我不知道这是否是正确的方法。我所做的就是UISplitViewController
在视图中扩展并保存它的实例,这样我就可以用它来隐藏或显示侧边栏。我希望能有用!
归档时间: |
|
查看次数: |
587 次 |
最近记录: |