Asyn c обновление представления внутри ScrollView при прокрутке - PullRequest
0 голосов
/ 04 августа 2020

У меня есть представление, которое обновляется асинхронно при появлении. Он обновляется через издателя, который получает некоторые данные и отображает их. Я помещаю это представление в ForEach, завернутый в список (но он такой же, как в ScrollView).

Проблема в том, что пока я прокручиваю появляющиеся дочерние представления, они не обновляются, пока я не отпущу палец из экран. Я нашел решение (следуя этому вопросу ), поместив в ObservableObject эту очередь:

private let queue = DispatchQueue(label: "datafetching.queue", attributes: .concurrent)

и добавив .receive(on: queue) к издателю.

Кажется работать, но когда я это делаю, SwiftUI подчиняется заявлению: Публикация изменений из фоновых потоков не разрешена; не забудьте опубликовать sh значения из основного потока (с помощью таких операторов, как receive (on :)) при обновлении модели.

Кроме того, некоторые дочерние представления начали обновляться неправильно.

...