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)

minFrameHeightsetRowHeight 是我设置的常量。

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

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

【讨论】:

您找到更好的解决方案了吗?

以上是关于SwiftUI 嵌套列表不出现的主要内容,如果未能解决你的问题,请参考以下文章

具有自定义数据结构的 SwiftUI 列表,每个循环都嵌套 [关闭]

删除嵌套属性中的元素时更新 SwiftUI 列表

SwiftUI 嵌套数组结构并在列表中显示

SwiftUI:列表中的数据有时出现有时不出现

swiftui列表没有出现但数组不为空

SwiftUI - 列出嵌套数组中的元素