我想知道目前(在询问时,第一个 Xcode 12.0 Beta)是否有初始化 @StateObject
的方法。带有来自初始化程序的参数。
更具体地说,这段代码可以正常工作:
struct MyView: View {
@StateObject var myObject = MyObject(id: 1)
}
但这不会:struct MyView: View {
@StateObject var myObject: MyObject
init(id: Int) {
self.myObject = MyObject(id: id)
}
}
据我了解@StateObject
的作用是使 View 成为对象的所有者。我使用的当前解决方法是传递已经初始化的 MyObject 实例,如下所示:
struct MyView: View {
@ObservedObject var myObject: MyObject
init(myObject: MyObject) {
self.myObject = myObject
}
}
但是现在,据我所知,创建对象的 View 拥有它,而这个 View 没有。谢谢。
最佳答案
这是解决方案的演示。使用 Xcode 12b 测试。
class MyObject: ObservableObject {
@Published var id: Int
init(id: Int) {
self.id = id
}
}
struct MyView: View {
@StateObject private var object: MyObject
init(id: Int = 1) {
_object = StateObject(wrappedValue: MyObject(id: id))
}
var body: some View {
Text("Test: \(object.id)")
}
}
关于swift - 在 SwiftUI 中使用参数初始化 @StateObject,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62635914/