Я пытаюсь прокрутить коллекцию CollectionView по первой ячейке после появления представления, а затем снова при каждом нажатии кнопки. Проблема в том, что collectionView не сгенерировал все свои ячейки ни в одной из функций жизненного цикла представления.
Мое решение состоит в том, чтобы запустить l oop в фоновом потоке, который проверяет, если collectionView.visibleCells.count > 0
, и когда это так, вернуться в основной поток и прокрутить до первой ячейки. Тем не менее, я получаю сообщение об ошибке, в котором говорится, что я не должен получать доступ к visibleCells
из основного потока, а приложение при этом загружается.
Как мне добиться этой функциональности в главном потоке или проверить количество ячеек в фоновом потоке?
private func scrollToFirst() {
DispatchQueue.global(qos: .background).async { [weak self] in
if (self != nil) {
while(self!.collectionView.visibleCells.count != 0) {
DispatchQueue.main.async { [weak self] in
self!.collectionView.scrollToItem(at: IndexPath(item: 0, section: 0), at: .centeredHorizontally, animated: true)
}
}
}
}
}