[英]UICollectionView.reloadData() do NOT trigger UICollectionDataSource methods
[英]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.