В UIKit у нас есть UITableViewDataSourcePrefetching
(https://andreygordeev.com/2017/02/20/uitableview-prefetching/).
. Я хочу сделать что-то подобное в SwiftUI, чтобы показать большую коллекцию данных, где все это не может быть в памяти вв то же время.
Я придумал решение, где невидимый прямоугольник имеет обратный вызов .onAppear
, который обрабатывает загрузку большего количества данных. Проблема в том, что это делает процесс довольно медленным, так как данные нефактически предварительно выбран, но загружается только тогда, когда мы достигаем точки в таблице.
struct ContentView: View {
@ObjectBinding var elements: [Int]
var body: some View {
ForEach(elements.identified(by: \.self)) { element in
Text("\(element)")
}
Rectangle().opacity(0).onAppear {
// Add more data
}
}
}
Я хотел бы иметь возможность добавить это событие .onAppear
в более ранний элемент, созданный ForEach
, для фактического извлеченияданные до того, как мы достигнем конца текущих данных.
Еще одна альтернатива, о которой я подумал, - создать собственную коллекцию, которая в своей функции нижнего индекса загружает больше данных при обращении к одному из последних признаков.это решение заключается в том, что SwiftUI получает доступ ко всем признакам при первоначальной загрузке View
.