我一直在编写我的第一个 SwiftUI 应用程序,用于管理图书收藏。它有List
大约 3,000 个项目,可以非常有效地加载和滚动。如果使用切换控件过滤列表以仅显示书籍我没有更新前 UI 冻结了 20 到 30 秒,大概是因为 UI 线程正忙于决定是否显示 3,000 个单元格中的每一个。
有没有一种好方法可以在 SwiftUI 中处理像这样的大列表的更新?
var body: some View {
NavigationView {
List {
Toggle(isOn: $userData.showWantsOnly) {
Text("Show wants")
}
ForEach(userData.bookList) { book in
if !self.userData.showWantsOnly || !book.own {
NavigationLink(destination: BookDetail(book: book)) {
BookRow(book: book)
}
}
}
}
}.navigationBarTitle(Text("Books"))
}