В SwiftUI, где находятся события управления, т. Е. ScrollViewDidScroll для обнаружения нижней части списка данных - PullRequest
3 голосов
/ 14 июня 2019

В SwiftUI кто-нибудь знает, где находятся управляющие события, такие как scrollViewDidScroll, чтобы определить, когда пользователь достигает нижней части списка, вызывая событие для получения дополнительных порций данных?Или есть новый способ сделать это?

Похоже, UIRefreshControl () там тоже нет ...

1 Ответ

7 голосов
/ 14 июня 2019

В 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 { }

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...