Раздел заголовка в контроллере uicollectionview. вне зоны доступа
Я использую viewForSupplementaryElementOfKind
Функция для применения раздела заголовка из uicollectionview
контроллер. Однако перед асинхронным разбором viewDidAppear
API, индекс строки загружается в viewForSupplementaryElementOfKind
функция и становится вне диапазона. Что я должен делать?
Вот мой код...
override func viewDidAppear(_ animated: Bool) {
callVideo3API()
}
override func collectionView(_ collectionView: UICollectionView, viewForSupplementaryElementOfKind kind: String, at indexPath: IndexPath) -> UICollectionReusableView {
switch kind {
case UICollectionElementKindSectionHeader:
let row1 = self.list[0]
let row2 = self.list[1]
let row3 = self.list[2]
let headerSection = collectionView.dequeueReusableSupplementaryView(ofKind: UICollectionElementKindSectionHeader, withReuseIdentifier: "Header", for: indexPath) as! HeaderSection
headerSection.nameLabel01.text = row1.nickname
headerSection.nameLabel02.text = row2.nickname
headerSection.nameLabel03.text = row3.nickname
return headerSection
default:
assert(false, "Unexpected element kind")
}
}
1 ответ
Решение
Вы должны подождать, пока callVideo3API()
закончить После успешного завершения callVideo3API()
Вы можете перезагрузить представление коллекции, чтобы получить вывод. Пожалуйста, следуйте инструкциям ниже
- Метод вызова
callVideo3API()
- Делать
CollectionView
пусто, возвращая ноль через CollectionView DataSource [func numberOfSections(in collectionView: UICollectionView) -> Int
,func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int
] - (Необязательно) На время
callVideo3API()
выполнение вы можете показать индикатор активности на месте вашего CollectionView - После успешного завершения
callVideo3API()
вы можете перезагрузитьCollectionView
с соответствующим значением источника данных. На этот раз он будет работать без ошибок:-) (Если вы поставили индикатор активности, не забудьте удалить после успешного вызова API)