我认为这个错误消息对于 Xcode 12 中的 SwiftUI 来说是新的,因为它在 Google 中的点击率为 0,而消息本身相当通用:
访问安装在视图之外的状态值。这将导致 Binding 的初始值恒定并且不会更新。
我有以下代码(删除了一些绒毛):
public struct ContentView: View {
@ObservedObject var model: RootViewModel
public var body: some View {
VStack(alignment: .center, content: {
Picker(selection: model.$amount, label: Text("Amount")) {
Text("€1").tag(1)
Text("€2").tag(2)
Text("€5").tag(5)
Text("€10").tag(10)
}.pickerStyle(SegmentedPickerStyle())
Text("Donating: €\(model.amount)").font(.largeTitle)
}).padding(.all, 20.0)
}
}
public class RootViewModel: ObservableObject {
@State public var amount: Int = 1
}
我曾经有过field
就在ContentView
效果还不错。现在用户界面不再更新,而是收到运行时警告。
感谢@Andrew的回答,我想出了如何让它再次工作。首先你改变@State
to @Published
:
@Published public var amount: Int = 1
接下来,您需要改变您的方式Picker
与数据绑定:
Picker(selection: $model.amount, label: Text("Amount")) {
Text("€1").tag(1)
Text("€2").tag(2)
Text("€5").tag(5)
Text("€10").tag(10)
}.pickerStyle(SegmentedPickerStyle())
所以我们从model.$amount
to $model.amount
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)