在我的init()
中,我试图通过传入一个绑定到作用域中的另一个变量来初始化一个@StateObject
变量。
我想实现这样的目标:
struct MyView: View {
@State var value: Bool
@StateObject var viewModel: ViewModel
init() {
self.value = false
self.viewModel = ViewModel($value)
}
}
我知道,当在初始化过程中需要属性时,我们可以创建它们的副本并在初始化器中使用该副本。然而,由于我试图使用绑定,绑定到变量的副本将不起作用。
我如何才能做到这一点?谢谢你!
3条答案
按热度按时间db2dz4w81#
这个有用吗这样,您就可以将属性值存储在ViewModel内部,然后您可以在以后使用该值,例如
$viewModel.value
。acruukt92#
如果
value
无论如何都绑定到视图模型,则更好的做法是在视图模型中将其声明为@Published
属性fykwrbwg3#
chuan322的答案是一个很好的答案,但你可以修改一下如下: