如果这已经被覆盖,我很抱歉,我在问这个问题时可能会犯任何错误——我对 Stackoverflow 和 SwiftUI 都很陌生。因此,据我了解,在更改变量时会调用 didSet。但是,当我执行此代码时,尽管 var number1 和 var number2 正在更改,但似乎 var finalNum 并未更新?为什么 number1 和 number2 对应的 didSet 没有被执行?这个想法是 number1 和 number2 的选择器彼此相邻,因此 number1 用于设置 finalNum 的十位,而 number2 用于设置个位。
(其中很多不是来自我自己;它来自我用来熟悉 Picker 的一个例子。
import SwiftUI
struct ContentView: View {
@State private var finalNum = 0
@State private var number1 = 1{
didSet{
finalNum = number1*10+number2
}
}
@State private var number2 = 1{
didSet{
finalNum = number1*10+number2
}
}
var body: some View {
VStack {
GeometryReader{ geo in
HStack{
Picker("", selection: $number1) {
ForEach(1...10, id: \.self) {
Text("\($0)")
}
}.frame(maxWidth: geo.size.width / 2)
.clipped()
Picker("", selection: $number2) {
ForEach(1...10, id: \.self) {
Text("\($0)")
}
}.frame(maxWidth: geo.size.width / 2)
.clipped()
}
}
Text("number: \(finalNum)")
Spacer()
}
}
}