【发布时间】:2019-03-20 21:55:23
【问题描述】:
一段时间以来,我一直在尝试弄清楚如何实时更新 uicollectionview。
我已经尝试使用多种不同的方法来完成这项工作,包括 reloadData、reloadItems 和 reloadSections。使用 DispatchQueue.main.async 而不是。
我不知道如何让它在用户选择其中一个单元格时更新用户面前的单元格内容。根据对单元格的点击,具体使标签文本变为粗体而不是粗体。
这是我在 swift 中设置的标签:
let nameLabel: UILabel = {
let label = UILabel()
label.text = ""
return label
}()
这里是collectionview的didselectitem
func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
let cell = collectionView.cellForItem(at: indexPath) as! FilterCollectionViewCell
let selected = ViewController.brands[indexPath.item]
if FilterLauncher.selectedOptions.contains(selected){
let loc = FilterLauncher.selectedOptions.firstIndex(of: selected)
FilterLauncher.selectedOptions.remove(at: loc!)
cell.nameLabel.font = UIFont.boldSystemFont(ofSize: 2.0)
DispatchQueue.main.async {
collectionView.reloadItems(at: [indexPath])
}
}
else{
FilterLauncher.selectedOptions.append(selected)
cell.nameLabel.font = UIFont.boldSystemFont(ofSize: 15.0)
DispatchQueue.main.async{
self.collectionView.reloadItems(at: [indexPath])}
}
}
它确实最终将所选单元格的文本更改为粗体,但它会延迟。当我尝试选择第一个粗体的单元格时,我需要尝试选择另一个单元格。当我第一次选择单元格时,它会闪烁我想要的更改,然后又返回。
【问题讨论】:
标签: ios swift uicollectionview reloaddata