List の一番下までスクロールしたかチェックする方法(追加読み込み)
大量のデータを一気に読み込まないで、20〜30件を分割して読み込んでいく場合、スクロールの終端到達をチェックする必要があります。
UIKit の UITableView の場合は cellForRow(at indexPath: IndexPath) で indexPath.row が最後のデータ行であるかどうか、などで判定していたと思います。
SwiftUI の List では以下のようにすればチェックすることができます。
List {
ForEach(users) { user in
RowView(User: user)
.onAppear() {
if user.id == users.last?.id {
addLoad()
}
}
}
}
ForEach の users は仮に User というデータクラスの配列で、List の行は RowView という View が予め定義されているものと仮定します。
上記例では、RowView が表示された時、すなわち onAppear() がコールされた時に、その RowView に表示する User の id が配列最後の要素の id と一致するなら最終行が表示された、という判定を行っています。
このタイミングで追加の読み込み処理を行うと良いでしょう。
以上
コメントを残す