Swift:如何在结构范围之外修改结构 属性

Swift: How to modify struct property outside of the struct's scope

在 Swift/SwiftUI 中编程,并在尝试启用视图以修改不同结构的属性时遇到此问题。

有没有办法在不为结构创建对象的情况下修改属于结构的 属性?如果有,那是什么?

现在,您正在尝试访问 showOverlap,就好像它是 MainView 上的 static 变量一样——这不会起作用,因为它不是静态 属性,即使是,您也需要引用您所展示的 MainView 的特定实例——这在 SwiftUI 中我们通常会避免,因为 View 是可传递的。

相反,您可以传递一个 Binding——这是在 SwiftUI 中将父视图的状态传递给子视图的方法之一。


struct MainView: View {
    @State var showOverlap = false
    
    var body: some View {
        ZStack {
            Button(action: {
                showOverlap = true
            }) {
                Text("Button")
            }
            if showOverlap {
                Overlap(showOverlap: $showOverlap) //<-- Here
            }
        }
    }
}


struct Overlap: View {
    @Binding var showOverlap : Bool  //<-- Here
    
    var body: some View {
        ZStack {
            RoundedRectangle(cornerRadius: 40)
                .aspectRatio(130/200, contentMode: .fit)
                .foregroundColor(.gray)
            
                Button(action: {
                   showOverlap = false //<-- Here
                }, label: {
                    Text("Back")
                })
        }
    }
}