SwiftUI List 判斷滑動到最後一筆
·
1min
前言
使用 UITableView 或是 UICollectionView, 常使用 willDisplay cell 來判斷是否滑動到最後一筆,
ex:
func collectionView(_ collectionView: UICollectionView, willDisplay cell: UICollectionViewCell, forItemAt indexPath: IndexPath) {
let count = dataSource.snapshot().numberOfItems
if indexPath.item == count - 1, viewModel.hasNextPage {
viewModel.doAction(.loadNextPage)
}
}
SwiftUI List 要如何實作?
實作
- 在 ForEach 找出 index
- 在 View.onAppear 加入判斷
List {
// 1. 使用 array.indices 找出 index
ForEach(viewModel.datas.indices, id: \.self) { index in
let data = viewModel.datas[index]
cell(data: data)
.onAppear { // 2. 判斷 index 是否為最後一筆
if index == viewModel.datas.count - 1 && viewModel.hasNextPage {
viewModel.doAction(.loadNextPage)
}
}
}
}