Did you test just passing in ListView(Bindable(listData).listDataArray), instead of creating a @Bindable in the View body?
I think it should work.
Post
Replies
Boosts
Views
Activity
You can, here is a very simplified example
// Apple documentation
// https://developer.apple.com/documentation/observation
@Observable
class A {
var name = "Nothing Here Yet"
@ObservationIgnored var age = 0
}
class ViewController: UIViewController {
var a = A()
var lbl: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
setupLabel()
track()
a.name = "Hello World"
}
func track() {
withObservationTracking {
let _ = self.a.name
} onChange: {
Task { @MainActor [weak self] in
self?.lbl.text = self?.a.name
}
}
}
func setupLabel() {
lbl = UILabel(frame: CGRect(x: 135, y: 300, width: 300, height: 44))
lbl.text = a.name
self.view.addSubview(lbl)
}
}
There is, only it is not a public API.
_UIHostingView
The underscore prefix means it is not public API. But it works if you try it out. However, I would not recommend using it, because there is a reason it is not public, and you will possibly bury mines in your code if you use it.