我控制文本.onChange
中的条件,如果该条件通过了,那么我想运行一些代码,这是我的代码,它可以工作,但不支持我给定的条件,它可以工作为真也为假。我希望它仅适用于真实情况。我该如何编码?
import SwiftUI
struct ContentView: View {
@State var truePhase: Bool = false
var body: some View {
Text(truePhase ? "Phase is True" : "Phase is False")
.onChange(of: truePhase == true , perform: { value in
print(truePhase)
})
Button(action: {
truePhase.toggle()
}){
Text("Change Phase")
}
}
}
答案 0 :(得分:1)
onChange
发生更改时,就会调用 Equatable
。如果您将条件作为value
参数传递,则只要此条件发生变化(无论它是对还是错),都将执行perform
闭包。您需要将支票放入perform
闭包中。
为此,您可以使用guard
语句。请尝试以下操作:
.onChange(of: truePhase) { value in
guard value else { return } // if `value` is not `true` then return
print(truePhase) // here value is `true`
}