SwiftUI嵌套列表未出现

时间:2019-10-10 09:29:06

标签: swiftui swiftui-list

我正在尝试创建带有两个嵌套列表视图的视图。这意味着主视图有行,每行也有行。由于需要重新排序(编辑模式)并滑动以删除(仅内部行),因此我不能仅将ForEach循环与滚动视图一起使用。 问题如下:当我点击“ + add set”时,内部行不显示,尽管调试显示它们实际上已添加。原因可能是外排的视图无法适应其高度。我知道这是因为,如果仅使用ForEach而不使用List,则会出现行。但是我不能使用滑动来删除。这是内部行的代码(作为列表视图):

       List {
                ForEach(self.exercise.sets) { set in
                    SetRow(set: set, exercise: self.exercise)
                }.onDelete { (offsets) in
                    self.exercise.sets.remove(atOffsets: offsets)
                }
        }

每个外部行在此List之前都有VStack(用于练习名称和列标题),并在下面有一个按钮。看到屏幕截图 Inner list without List, only ForEach loop

Althout object for the inner row was added, the row doesn't appear

1 个答案:

答案 0 :(得分:0)

似乎我找到了解决方法...外部列表在代码中如下所示:

 List() {

      Text("New workout").font(.title)

       ForEach(self.workoutModel.exercises) {exercise in
            ExerciseWorkoutView(exercise: exercise)
        }



  }

我只是将以下框架修改器添加到 ExerciseWorkoutView (这是一个具有列表视图的 VStack

.frame(height: self.minFrameHeight + self.setRowHeight * CGFloat(self.exercise.sets.count)).animation(.default)

minFrameHeight setRowHeight 是我设置的常量。

self.exercise是一个观察对象,具有一组数组作为 @Published 实例变量。这就是框架高度自动适应的原因...

如果有人知道更好的解决方案,谢谢发布。我已经尝试了 .fixedSize(...)的几种变体,但是没有用。