簡體   English   中英

UICollectionView.reloadData()在添加第一個項目后起作用,然后似乎在后面運行了一個

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

我有一個帶有字符串數組的空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返回正確的計數,所以我不知道為什么它采用這種方式。 有任何想法嗎?

嘗試先完成陣列填充,完成后再調用keywordCollection.reloadData()

您還能分享一下如何調用addKeyword方法嗎

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM