Nol*_*der 4 observable ios swift swiftui combine
我有一个UIViewControllerRepresentable
订阅 ObservableObject 的结构,如下所示:
struct ViewControllerWrapper: UIViewControllerRepresentable {
@ObservedObject var chartVM = ChartViewModel()
typealias UIViewControllerType = ViewController
func makeUIViewController(context: Context) -> ViewController {
let lineChartView = LineChartView()
let vc = ViewController(lineChartView: lineChartView)
return vc
}
func updateUIViewController(_ uiViewController: ViewController, context: Context) {
uiViewController.metrics = chartVM.metrics
uiViewController.setChartValues()
}
}
Run Code Online (Sandbox Code Playgroud)
我希望,当 ObservedObject 改变时,要么updateUIViewController
被调用,要么是另一个更新视图控制器metrics
数组并调用它的setChartValues()
方法的函数。
有没有办法做到这一点?我找不到一个
我总是可以像过去只使用 UIKit 那样做,但使用 MVVM 模式会更好
帮助将不胜感激,谢谢!
updateUIViewController
应该在视图模型更新时调用,但是 SwiftUI 中存在一个错误UIViewControllerRepresentable
并且UIViewRepresentable
没有调用它。
通过定义一个类并在可表示对象中创建它的一个实例,可以解决这个问题。
只需在下面添加以下内容chartVM
,它就会开始工作:
class RandomClass { }
let x = RandomClass()
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1669 次 |
最近记录: |