【发布时间】:2022-01-24 03:00:06
【问题描述】:
以下代码被简化和隔离。它的目的是有一个 Text() 视图,它显示按钮被点击的次数,以及一个 Button() 来增加文本视图。
问题:单击按钮实际上并没有改变 Text() 视图,而是继续显示“1”
struct Temp: View {
@State var h = struct1()
var body: some View {
VStack {
Button(action: {
h.num += 1
}, label: {
Text("CLICK ME")
})
Text(String(h.num))
}
}
}
struct struct1 {
@State var num = 1
}
有趣的是,相同的代码也可以在 swift playground 中运行(显然 Text() 更改为 print())。所以,我想知道这是否是 XCode 特定的错误?如果不是,为什么会这样?
【问题讨论】:
-
从不是 SwiftUI 视图的结构中取出状态。它不属于那里。
-
@lorem ipsum,这解决了它!谢谢!我不知道为什么,但......你能回答一下,也许会说为什么会这样吗?
-
State 属性包装器专门用于 SwiftUI 视图,而不仅仅是任何结构。
-
@chuk 你介意接受答案吗?它是下面的绿色复选标记
标签: swift xcode struct swiftui