SwiftUI-嵌套的ForEach-迭代数组数组中的索引。元素ID问题

时间:2020-06-14 10:41:16

标签: ios swift swiftui

我的目标是制作一个动态的对象分组列表,将对象分为多个部分,每个对象的详细信息视图和编辑功能。

我将对象分为3个部分 我试图将数据分组为数组[Int:[Objects]]

的字典

但是我在编辑时遇到了问题,所以我用对象[[objectsGrouped]]制成了3个数组的数组

现在,我想用ForEach对其进行迭代。 为了能够进行编辑,我得到了一个提示,即不要对对象进行迭代,而要对索引进行迭代。

它可以工作,但是SwiftUI在识别行时遇到了问题,因为每个数组的索引都相同。当我删除一行时,其他行会随机出现在错误的位置。

@ObservedObject var objects = Objects()

var body: some View {
    NavigationView {
        List {
            ForEach(0..<objects.objectsGrouped.count, id: \.self) { indexGroup in
                Section(header: CustomHeader(group: indexGroup, objects: self.objects), content: {
                    ForEach(0..<self.objects.objectsGrouped[indexGroup].count, id: \.self) { indexObject in
                        NavigationLink(destination: ObjectDetail(object: self.objects.objectsGrouped[indexGroup][indexObject]))
                            { ObjectRowView(object: self.objects.objectsGrouped[indexGroup][indexObject]) }

每个对象都有唯一的id属性,但是我无法访问它,因为我要遍历索引。

我发现附上.id(self.objects.objectsGrouped[indexGroup][indexObject].id) 到ObjectRowView有点帮助-删除行不会出现在错误的位置 但是当我删除行时,swiftUI仍然无法为行设置动画

0 个答案:

没有答案