UICollectionView.reloadData() 在添加第一项后起作用,然后似乎 运行 落后了

UICollectionView.reloadData() works after adding first item, then seems to run one behind

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

当我将第一个字符串添加到数组并在 collectionView 上调用 reloadData() 时,这按我预期的那样工作。当我添加第二个字符串并调用 reloadData() 时,什么也没有发生,但我的数组确实增长了。当我添加第三个项目并调用 reloadData() 时,第二个项目出现但不是第三个。每个新的添加都会导致出现先前的字符串。

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

我的代码添加到collection:

func addKeyword(keyword: String) {

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

}

还有我的collection查看相关代码:

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 正在返回正确的计数,所以我不知道为什么它会这样。有什么想法吗?

先尝试完成数组填充,完成后调用 keywordCollection.reloadData()

能否分享一下您是如何调用 addKeyword 方法的