如何在SwiftUI的视图的.onChange中找出某些条件?

时间:2020-10-18 20:20:46

标签: swiftui

我控制文本.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")
        }
    }
}

1 个答案:

答案 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`
}