SwiftUI Pull to refresh + ObservableObject


#1

В SwiftUI нет родного решения для Pull to refresh. Пытаюсь использовать кастомное, вот такое - https://swiftui-lab.com/scrollview-pull-to-refresh/?unapproved=486&moderation-hash=2f766f473d175f63846aeb0f5c430425#comment-486

Столкнулся с проблемой. Есть класс ObservableObject с булевой переменной. Когда пользователь тянет страницу чтобы обновить контент - эта переменная меняется на true и вызывает функцию внутри этого класса, после чего возвращает переменную обратно в false. В моем случае мне надо вызвать не функцию внутри этого класса, а функции внутри моего вью, так как они берут переменные из этого вью а по завершении обновления меняют другие переменные в этом же вью. Если я перенесу эти функции в этот отдельный класс - то мне придется как-то пробрасывать туда переменные и возвращать результат. Но даже не понятно как передать туда параметры, ведь функцию изнутри класса я сам не вызываю, она срабатывает автоматически, когда меняется булева переменная (pull to refresh). В общем геморрой какой-то. Я попробовал создать прямо во вью локальную переменную, за которой бы следил ScrollableView. Например так
@State var refresh: Bool = false { didSet {
if oldValue == false && loading == true {
//do something here
self.loading = false }}

Но оказалось, что property observers не работают с @State переменными…


#2

Посмотри: