【发布时间】:2020-01-05 16:47:15
【问题描述】:
所以我有一个列表,当用户填写搜索关键字时会发生变化,当没有结果时,所有单元格都会崩溃,并且不知何故它们会飞到第一部分,这看起来很丑陋。我的代码中有错误还是这是预期的 SwiftUI 行为?谢谢。
import SwiftUI
struct ContentView: View {
@ObservedObject var viewModel = ViewModel(photoLibraryService: PhotoLibraryService.shared)
var body: some View {
NavigationView {
List {
Section {
TextField("Enter Album Name", text: $viewModel.searchText)
}
Section {
if viewModel.libraryAlbums.count > 0 {
ForEach(viewModel.libraryAlbums) { libraryAlbum -> Text in
let title = libraryAlbum.assetCollection.localizedTitle ?? "Album"
return Text(title)
}
}
}
}.listStyle(GroupedListStyle())
.navigationBarTitle(
Text("Albums")
).navigationBarItems(trailing: Button("Add Album", action: {
PhotoLibraryService.shared.createAlbum(withTitle: "New Album \(Int.random(in: 1...100))")
}))
}.animation(.default)
}
}
【问题讨论】:
-
你想把结果放在第一项吗?那么你需要进行排序而不是过滤
-
@ErnistIsabekov 不,我想过滤以显示结果。最终结果不是问题,而是从完整列表到结果的转换。您会看到当单元格折叠时,它会飞到顶部以超出其部分。这只是一瞬间的动画错误,但在设备上很明显。