Header uicollectionview 控制器中的部分。超出范围

Header section in the uicollectionview controller. out of range

我正在使用 viewForSupplementaryElementOfKind 函数应用来自 uicollectionview 控制器的 header 部分。但是在viewDidAppearAPI的异步解析之前,行索引被加载到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")
    }
}

您必须等到 callVideo3API() 完成。 callVideo3API() 成功完成后,您可以重新加载集合视图以获取输出。请按照以下步骤

  1. 调用方法callVideo3API()
  2. 通过 CollectionView 返回零使 CollectionView 为空 DataSource [func numberOfSections(in collectionView: UICollectionView) -> Int, func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int ]
  3. (可选) 在执行 callVideo3API() 时,您可以显示一个 activity 指标CollectionView 的位置
  4. 成功完成callVideo3API()后你可以重新加载 CollectionView 具有相应的数据源值。这一次 将正常工作 :-) (如果你放置 activity 指标,请不要忘记在 api 调用成功后删除)