滚动时列表中的SwiftUI ScrollView消失

时间:2019-12-22 14:56:20

标签: ios swift listview scrollview swiftui

如果我将多个水平ScrollView放在List中,则它们在滚动时会消失。这是一个示例:

screenrecording

以下是重现此问题的代码:

struct ContentView: View {

    var body: some View {
        List {
            ForEach(0...100, id: \.self) { _ in
                ScrollView(.horizontal) {
                    HStack {
                        Rectangle().frame(width: 100, height: 100)
                        Rectangle().frame(width: 100, height: 100)
                        Rectangle().frame(width: 100, height: 100)
                    }
                }
            }
        }
    }
}

我正在使用iOS 13.3。不幸的是,将帧添加到ScrollViewHStack并没有帮助。有人知道解决此问题的方法吗?

2 个答案:

答案 0 :(得分:3)

这似乎是与项目重用有关的错误。您可以尝试修复在Lists和ScrollViews中设置id的问题。

List(array, id: \.self) { item in
    Text("\(item)")
}.id(UUID().uuidString)

herehere中有关此修复程序的更多信息。

答案 1 :(得分:-1)

为防止块消失,您应该在VStack中包含ForEach循环。虽然,我不确定它们消失的原因。

List {
        VStack {
            ForEach(0...10, id: \.self) { _ in
                ScrollView(.horizontal) {
                        HStack {
                            Rectangle().frame(width: 100, height: 100)
                            Rectangle().frame(width: 100, height: 100)
                            Rectangle().frame(width: 100, height: 100)
                    }
                }
            }
        }
    }