В SwiftUI отсутствует множество функций - в данный момент это кажется невозможным .
Но вот обходной путь .
TL; DR пропустить прямо внизу ответа
Интересная находка во время сравнения между ScrollView
и List
:
struct ContentView: View {
var body: some View {
ScrollView {
ForEach(1...100) { item in
Text("\(item)")
}
Rectangle()
.onAppear { print("Reached end of scroll view") }
}
}
}
Я добавил Rectangle
в конце 100 Text
элементов внутри ScrollView
, с print
в onDidAppear
.
Срабатывает, когда появляется ScrollView
, даже если он показывает первые 20 пунктов.
Все виды внутри Scrollview отображаются немедленно, даже если они находятся за пределами экрана.
Я попробовал то же самое с List
, и поведение другое.
struct ContentView: View {
var body: some View {
List {
ForEach(1...100) { item in
Text("\(item)")
}
Rectangle()
.onAppear { print("Reached end of scroll view") }
}
}
}
print
выполняется только тогда, когда достигается нижняя часть List
!
Так что это временное решение, пока SwiftUI API не станет лучше .
Используйте List
и поместите «поддельное» представление в его конец, и поместите логику извлечения в onAppear { }