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 方法的
我有一个空的 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 方法的