ios - 基于 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 。我该如何解决?
解决方案
推荐阅读
- python - 为什么我的 numpy 矩阵在被分配之前会更新?
- c# - 如何使用正则表达式在单引号前后删除特定字符
- google-drive-api - Google Drive API webContentLink 重定向到不同的域
- session - Oauth2真的是无国籍的吗?
- aws-step-functions - 具有动态步骤的 AWS Step Functions
- python - 将日期时间数据的数据框列转换为 DD/MM/YYYY 字符串数据
- css - 引导角度日期选择器 ngbDatepicker 不会在 ngbPanelContent 上溢出
- ionic-framework - HTML5 视频播放器在使用 Ionic-v3 加载位于设备内部的视频时出错
- javascript - 如何使用 Jquery 在一个列标题下包含 2 列
- julia - 如何从 Julia 图中提取 xy 数据?