Ios 更新UIViewRepresentable中的绑定

Ios 更新UIViewRepresentable中的绑定,ios,swiftui,Ios,Swiftui,我有一个swiftUI视图,它调用UIViewRepresentable视图。在SwiftUI视图中,我切换@state布尔值的状态 在我的UIViewRepresentable视图中,我创建了一个从主SwiftUI视图获得的绑定。问题是绑定从未得到更新,或者至少在UIViewRepresentable视图中没有调用updateView函数。我觉得我一定是做错了什么,但我只是忽视了它。下面是我正在尝试做的一个例子 import Foundation import SwiftUI st

我有一个swiftUI视图,它调用UIViewRepresentable视图。在SwiftUI视图中,我切换@state布尔值的状态

在我的UIViewRepresentable视图中,我创建了一个从主SwiftUI视图获得的绑定。问题是绑定从未得到更新,或者至少在UIViewRepresentable视图中没有调用updateView函数。我觉得我一定是做错了什么,但我只是忽视了它。下面是我正在尝试做的一个例子

  import Foundation
  import SwiftUI

 struct BindingTest: UIViewRepresentable {

@Binding var status: Bool


func makeUIView(context: Context) -> UIActivityIndicatorView {
    
    let activityIndicator = UIActivityIndicatorView()
    
    activityIndicator.style = .large
    
    return activityIndicator
}

func updateUIView(_ uiView: UIViewType, context: Context) {
    
    
    print("Hello")
    
}

}



 import SwiftUI

 struct ChartView: View {

@State var status = false

var body: some View {

    
    VStack{
        
        Spacer()
    
    Button(action: {
        
       status = !status
        
    }) {
        
        Text("Change")
        
    }

    BindingTest(status: $status)
    
    
        
    }
}
}

我使用的是Xcode 12.5和Swift 5.4,看起来SwiftUI在引擎盖下做了一些对我们来说并不明显的聪明事。因为您实际上没有在
updateUIView
中使用绑定,所以它实际上没有被调用

但是,如果将代码更新为以下内容:

func updateUIView(_ uiView: UIViewType, context: Context) {
  print("Hello \(status)")
}
然后你会发现,事实上,它确实会被呼叫


PS-您可以使用
status.toggle()
而不是
status=!状态

谢谢,我没有想到要尝试这个。我以为绑定会自动调用updateUIView。但正如你所说,SwiftUI肯定比引擎盖下的更智能。