SwiftUI 嵌套列表不出现
Posted
技术标签:
【中文标题】SwiftUI 嵌套列表不出现【英文标题】:SwiftUI nested List doesn't appear 【发布时间】:2019-10-10 09:29:06 【问题描述】:我正在尝试创建一个包含两个嵌套列表视图的视图。这意味着主视图有行,每行也有行。由于重新排序要求(编辑模式)和滑动删除(仅限内行),我不能只使用带有滚动视图的 ForEach-loops。 问题如下:当我点击“+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)
每个外行在此列表之前都有 VStack(用于练习名称和列标题),下面有一个按钮。看屏幕截图
【问题讨论】:
【参考方案1】:似乎我找到了解决方法...外部列表在代码中如下所示:
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(...) 的几种变体,但没有奏效。
【讨论】:
您找到更好的解决方案了吗?以上是关于SwiftUI 嵌套列表不出现的主要内容,如果未能解决你的问题,请参考以下文章