我正在尝试创建带有两个嵌套列表视图的视图。这意味着主视图有行,每行也有行。由于需要重新排序(编辑模式)并滑动以删除(仅内部行),因此我不能仅将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)
}
}
答案 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(...)的几种变体,但是没有用。