Синхронное использование UITableView / UICollectionView для автономных данных - PullRequest
1 голос
/ 25 марта 2019

Я получаю огромное удовольствие, пытаясь придумать представления iOS UITableView/UICollectionView, чтобы сделать то, что мне нужно. По сути, у меня есть некоторые данные, которые взаимодействуют локально - без задержек в сети, и все манипуляции достаточно тривиальны, чтобы выполнять их синхронно.

Однако перезагрузка данных в этих классах, по-видимому, происходит асинхронно по умолчанию, и нет очевидных способов использовать их синхронно. reloadData() кажется единственным способом принудительного обновления без взаимодействия с пользователем, такого как прокрутка, но это асинхронный режим без очевидной альтернативы синхронизации.

Существует множество функциональных возможностей, которые предоставляют эти классы (особенно с перетаскиванием), но очевидная задержка, когда пользователь непосредственно манипулирует данными, является своего рода нарушителем. Эксперименты с, скажем, принуждением View * dataSource к другому классу при изменении данных пользователем не позволяют использовать эти классы и усложняют ситуацию.

Есть ли способы использовать эти классы в основном синхронно?

1 Ответ

0 голосов
/ 25 марта 2019

Crikey - задайте глупый вопрос после нескольких часов попыток, и ответ придет через 5 минут.

Я понял, что моя ошибка здесь не в своевременном обновлении TableView, а в dataSource, сохраняющем данные, когда их следовало очистить.

Что я вижу - reloadData происходит асинхронно, но в пределах довольно короткого цикла рендеринга, который должен быть незаметен для пользователя.

Как заметил @ Paulw11, лучший способ сделать это с помощью манипуляций на основе строк, если вы не уничтожаете набор данных для каждой мутации (как я)

...