UICollectionView.reloadData()在添加第一个项目后工作,然后似乎在后面运行一个

时间:2017-09-11 22:25:13

标签: ios swift uicollectionview reloaddata

我有一个空的UICollectionView,其中包含一个字符串数组作为数据源。

当我将第一个字符串添加到数组并在collectionView上调用reloadData()时,这正如我所料。当我添加第二个字符串并调用reloadData()时没有任何反应,但我的数组肯定增长了。当我添加第三个项目并调用reloadData()时,第二个项目出现但不是第三个项目。每个新添加都会导致出现上一个字符串。

如果我在不添加字符串的情况下调用reloadData(),则会显示最后一项。

我添加到集合的代码:

func addKeyword(keyword: String) {

    keywords.append(keyword)
    newKeywordText.text = ""
    keywordCollection.reloadData()

}

我的collectionView相关代码:

func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {

    print("keywords: at refresh \(keywords.count)")
    return keywords.count
}


func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {

    let keyword = keywords[indexPath.row]
    let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "KeywordCloudCell", for: indexPath) as! KeywordCloudCell
    let keywordLabel:UILabel = (cell.viewWithTag(1) as? UILabel)!
    keywordLabel.text = keyword

    return cell
}

我知道numberOfItemsInSection正在返回正确的计数,所以我不知道它为什么会这样表现。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

首先尝试完成数组,然后在完成后再调用    的 keywordCollection.reloadData()

您还可以分享您如何调用addKeyword方法