滚动列表时,SwiftUI崩溃

问题描述 投票:0回答:1

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

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

如果您有一个TabView并在其中包含一个列表,如果尝试在滚动动画发生时更改选项卡,则该应用程序将崩溃,并显示致命错误:“线程1:信号SIGABRT”。

控制台

  • BugTest [11830:362796]前提条件失败:属性无法设置初始值:98

您遇到过这个吗?有什么方法可以解决此问题而无需将列表更改为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")
        }
    }
}
list scroll swiftui tabview
1个回答
0
投票

根据this post,发生错误是因为列表中的项目不符合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
}

© www.soinside.com 2019 - 2024. All rights reserved.