如何使用swiftUI MacOS切换视图?
我发现了这个问题——但我还没有找到适合我工作的答案如何使用swiftUI MacOS切换视图?,swift,swiftui,Swift,Swiftui,我发现了这个问题——但我还没有找到适合我工作的答案 struct view4x: View { @State var goView: Bool = false var body: some View { if goView { view5x(goView1: self.$goView) } else { Form { /* ... */ }
struct view4x: View {
@State var goView: Bool = false
var body: some View {
if goView {
view5x(goView1: self.$goView)
} else {
Form {
/* ... */
}
}
}
}
按钮位于窗体内:
Button(action: {
self.goView.toggle()
}) {
Text("Catalog")
}
我的另一个观点是:
struct view5x: View {
@Binding var goView1: Bool
var body: some View {
Text("TEST")
Button(action: {
self.goView1.toggle()
}) {
Text("Return")
}
}
}
我只是得到两个实体都声明不透明返回类型的错误。它不会预览。好的,这里是您视图中的类似错误。为了更好地理解它们,请查看查看协议: @可提供iOS 13.0、OSX 10.15、tvOS 13.0、watchOS 6.0、* 公共协议视图{ ///表示此视图主体的视图类型。 /// ///创建自定义视图时,Swift会根据您的 ///所需“body”属性的实现。 associatedtype主体:视图 ///声明此视图的内容和行为。 var body:Self.body{get} } 所以,body只是一个计算变量,它应该返回一些视图。视图5x中的错误在于,您在其中放入了2个不同的视图,而不是1个。这里的解决方案是将它们嵌入到VStack中,例如: 结构视图5x:视图{ @绑定变量goView1:Bool var body:一些观点{ VStack{ 文本测试 按钮操作:{ 自我管理 } { 文本返回 } } } } view4x的问题类似——我认为,由于if…else语句,不清楚哪个视图返回body。您可以用相同的方法修复它: 结构view4x:视图{ @状态变量goView:Bool=false var body:一些观点{ VStack{ 如果政府认为{ view5xgoView1:$goView }否则{ 按钮操作:{ 自我管理 } { 文本目录 } } } } } 另一种方法是,如果将每个视图包装到AnyView中,并在前面键入return,则说明body应该返回哪个视图。在本例中,goView的更改不会切换视图,但您可以看到其他语法: 结构view4x:视图{ @状态变量goView:Bool=false var body:一些观点{ 如果政府认为{ 返回anyview5xgoview1:$goView }否则{ 返回任意视图按钮操作:{ 自我管理 } { 文本目录 } } } }