滚动列表时 SwiftUI 崩溃

SwiftUI Crash when scrolling a list

很高兴 post 我的第一个问题在这里!

我已经使用 SwiftUI 玩了几个星期了,在一个更大的项目中,我发现了以下错误。

如果您有一个 TabView 和其中的一个列表,如果您尝试在滚动动画发生时更改选项卡,应用程序将崩溃并显示 致命错误:"Thread 1: signal SIGABRT"。

控制台:

你遇到过这种情况吗?有什么方法可以在不将列表更改为 ForEach 的情况下解决此问题?

提前致谢!

代码:

import SwiftUI

struct ContentView: View {
    var body: some View {
                TabView {
                    list()
                        .tabItem {
                            Image(systemName: "doc")
                                .font(.system(size: 25))
                    }

                    Text("Testing the bug")
                        .tabItem {
                            Image(systemName: "list.dash")
                                .font(.system(size: 25))
                    }
        }
    }
}

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}

struct list: View {

    var body: some View {
        List(0..<50){_ in
            Text("test")
        }
    }
}

根据 ,错误发生是因为列表中的项目不符合 Identifiable 协议。

struct ContentView: View {
    var body: some View {
        TabView {
            list()
                .tabItem {
                    Image(systemName: "doc")
                        .font(.system(size: 25))
            }

            Text("Testing the bug")
                .tabItem {
                    Image(systemName: "list.dash")
                        .font(.system(size: 25))
            }
        }
    }
}

struct list: View {
    var elements: [CustomInt] = []

    init() {
        for i in 0...1000{
            elements.append(CustomInt(text:String(i)))
        }
    }

    var body: some View {
        List(elements){element in
            Text(element.text)
        }
    }
}

struct CustomInt: Identifiable{
    var id = UUID()
    var text:String
}

这应该有效

struct ContentView: View {
var body: some View {
            TabView {
               VStack{
                list()
                    .tabItem {
                        Image(systemName: "doc")
                            .font(.system(size: 25))
                }

                Text("Testing the bug")
                    .tabItem {
                        Image(systemName: "list.dash")
                            .font(.system(size: 25))
                }
    }
}
}}

struct ContentView_Previews: PreviewProvider {
static var previews: some View {
    ContentView()
}}

struct list: View {
var body: some View {
    List(0..<50){_ in
        Text("test")
    }
}}