【问题标题】:MVVM and passing over optinal value to the viewModelMVVM 并将可选值传递给 viewModel
【发布时间】:2021-08-10 06:25:04
【问题描述】:

我正在尝试使用 MVVM 方法来为我的 swiftui 应用程序工作,但我遇到了一个问题,即可选变量似乎没有被正确传递。

因此,您可以在主视图中单击“新建”或“编辑”,在编辑时我想将值传递过来,此屏幕的代码: 按钮:

Button {
        selectedTag = tag
        isShowingEdit.toggle()
} label: {
         Image(systemName: "pencil")
         .font(Font.system(size: 30, weight: .bold))
         .foregroundColor(.gray)
}

导航链接:

  NavigationLink(destination: TagsCreatingView(viewModel: TagCreateViewModel(tag: selectedTag)), isActive: $isShowingEdit) { EmptyView() }

TagCreateViewModel 初始化如下所示:

  init(tag: TagMO?) {

    if let tag = tag {
    self.tag = tag
        title = tag.title
        selectedColor = Int(tag.color)
    }

如果我在单击按钮时在 selectedTag 上进行打印,则它具有正确的值,但在 viewModel 上它将为零。此外,如果我单击编辑按钮两次,它按计划工作并且标签不是零(两次我的意思是单击编辑,在另一个屏幕上单击取消然后再次编辑..)

【问题讨论】:

    标签: swiftui


    【解决方案1】:

    问题是目标视图内部有

    @StateObject var viewModel: TagCreateViewModel

    将其更改为 @ObservedObject var viewModel: TagCreateViewModel

    在所有权正确后解决了这个问题:9

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-01-27
      • 2015-01-20
      • 2016-09-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-24
      相关资源
      最近更新 更多