我正在使用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")
}
}
答案 0 :(得分:1)
您必须等到callVideo3API()
完成。成功完成callVideo3API()
后,您可以重新加载集合视图以获取输出。请按照以下步骤
callVideo3API()
CollectionView
为空
数据源 [ func numberOfSections(in collectionView:
UICollectionView) -> Int
,func collectionView(_ collectionView:
UICollectionView, numberOfItemsInSection section: Int) -> Int
] callVideo3API()
执行时,您可以在CollectionView的位置显示活动指示符callVideo3API()
后,您可以重新加载
CollectionView
具有相应的DataSource值。这一次吧
工作没有任何错误:-) (如果你把活动指示器忘记在成功的api通话后忘记删除)