我的目标是制作一个动态的对象分组列表,将对象分为多个部分,每个对象的详细信息视图和编辑功能。
我将对象分为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仍然无法为行设置动画