首页 > 解决方案 > 基于 ForEach 选择的项目的 SwiftUI 呈现表

问题描述

当用户点击一行时,我有一个带有表单打开的 ForEach 循环。打开的工作表上的数据基于用户选择的行。我的代码:

@State private var showMoodModal = false
@State var activeMoodForModal = 0

...

ForEach(moodEntries, id: \.self) { entry in
    MoodTableViewCard(entry: entry).onTapGesture {
        self.activeMoodForModal = moodEntries.lastIndex(of: entry) ?? 0
        self.showMoodModal.toggle()
    }
}.sheet(isPresented: $showMoodModal) {
    MoodEntryModalView(entry: moodEntries[self.activeMoodForModal], isShown: self.$showMoodModal)
  }

问题是无论用户在第一次点击时选择哪一行,它都会创建一个带有entry: moodEntries[0]. 如果您关闭工作表并尝试点击另一行,它工作正常。entry: moodEntries[0]但是如果你重新启动应用程序,无论你点击哪一行,第一次尝试都会创建 MoodEntryModalView 。我该如何解决?

标签: iosswiftiphoneswiftui

解决方案


推荐阅读