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

时间:2017-02-24 19:43:52

标签: ios swift3 uicollectionview uicollectionreusableview

我正在使用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 个答案:

答案 0 :(得分:1)

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

  1. 致电方法callVideo3API()
  2. 通过 CollectionView返回零,使CollectionView为空 数据源 [ func numberOfSections(in collectionView: UICollectionView) -> Intfunc collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int ]
  3. (可选) callVideo3API()执行时,您可以在CollectionView的位置显示活动指示符
  4. 成功完成callVideo3API()后,您可以重新加载 CollectionView具有相应的DataSource值。这一次吧 工作没有任何错误:-) (如果你把活动指示器忘记在成功的api通话后忘记删除)