首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >UIViewRepresentable中的更新绑定

UIViewRepresentable中的更新绑定
EN

Stack Overflow用户
提问于 2021-05-13 01:10:36
回答 1查看 996关注 0票数 2

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

在我的UIViewRepresentable视图中,我创建了一个从主SwiftUI视图经过的绑定。问题是绑定永远得不到更新,或者至少updateView函数没有在UIViewRepresentable视图中被调用。我觉得我一定是做错了什么,但我只是忽略了它。下面是我想要做的事情的一个例子。

代码语言:javascript
复制
  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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-05-13 01:31:02

看起来SwiftUI正在做一些对我们来说不太明显的聪明的事情。因为您实际上没有在updateUIView中使用绑定,所以它实际上没有被调用。

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

代码语言:javascript
复制
func updateUIView(_ uiView: UIViewType, context: Context) {
  print("Hello \(status)")
}

然后你会发现,事实上,它是被调用的。

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

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67512738

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档