我正试图获得一个MVVM方法为我的swiftui应用程序工作,但我有一个问题,其中一个可选变量似乎没有得到传递正确。
在主视图中你可以点击"new"或者"编辑",在编辑时,我想传递这个值,这个屏幕的代码:按钮:
Button {
selectedTag = tag
isShowingEdit.toggle()
} label: {
Image(systemName: "pencil")
.font(Font.system(size: 30, weight: .bold))
.foregroundColor(.gray)
}
Navigationlink:
NavigationLink(destination: TagsCreatingView(viewModel: TagCreateViewModel(tag: selectedTag)), isActive: $isShowingEdit) { EmptyView() }
TagCreateViewModel init如下所示:
init(tag: TagMO?) {
if let tag = tag {
self.tag = tag
title = tag.title
selectedColor = Int(tag.color)
}
如果我在selectedTag上打印,当我点击按钮时,它有正确的值,但在viewModel中,它将是nil。此外,如果我点击编辑按钮两次,它按计划工作,标签不是nil(两次我的意思是点击编辑,在另一个屏幕上点击取消,然后再次编辑…)
问题是在目标视图中有
@StateObject var viewModel: TagCreateViewModel
将其更改为@ObservedObject var viewModel: TagCreateViewModel
解决了这个问题,因为所有权是正确的:9