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

我们如何在SwiftUI中的.onChange视图中找出一些条件?,swiftui,Swiftui,我在中控制一个条件。一旦改变了一个文本的,如果这个条件通过了,那么我想运行一些代码,这是我的代码,它可以工作,但它不支持我给定的条件,它可以为真也可以为假。我希望它只对真实有效。我如何编写代码 import SwiftUI struct ContentView: View { @State var truePhase: Bool = false var body: some View { Text(truePhase ? "Phas

我在
中控制一个条件。一旦改变了一个文本的
,如果这个条件通过了,那么我想运行一些代码,这是我的代码,它可以工作,但它不支持我给定的条件,它可以为真也可以为假。我希望它只对真实有效。我如何编写代码

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")
        }
    }
}

每当某些
equalable
更改时,就会调用
onChange
。如果将一个条件作为
参数传递,则每当该条件发生变化时(无论其为真或假),都将执行
执行
关闭。您需要在
perform
closure中进行检查

为此,您可以使用例如
guard
语句。请尝试以下操作:

.onChange(of: truePhase) { value in
    guard value else { return } // if `value` is not `true` then return
    print(truePhase) // here value is `true`
}

谢谢,我知道如何使用guard,或者如果我想在.onChange中的()中使用控制部分,就像我的code@Omid这是不可能的。看到我更新的答案。感谢更新,我想要比使用(guard或if)更高效的编码,所以让我这样问我的问题,我们如何让一个观察者观察文本值的变化?换句话说,我们如何观察文本值是否发生变化并得到通知?@Omid对于文本,您通常使用一些
@State var Text=“”
变量。你可以观察它
。onChange(of:text){value in}
我知道关于State和.onChange的所有内容,这些都是观察的逻辑方法。你是对的,我想为这个视图添加一些自定义通知,还记得我最后一个问题吗?你在.onReceive上添加了一个通知,用于查找方向!如果你认为我应该提出另一个问题,而这与这个问题无关,请让我知道。