Я уже некоторое время пытаюсь понять, как обновить uicollectionview в реальном времени.
Я попытался использовать несколько различных методов, чтобы сделать это, используя reloadData, reloadItems и reloadSections. Использование как DispatchQueue.main.async, так и нет.
Я не могу понять, как довести его до такой степени, что когда пользователь выбирает одну из ячеек, обновлять содержимое этой ячейки можно прямо перед пользователем. В частности, сделайте текст метки полужирным, а не полужирным в зависимости от количества щелчков по ячейке.
Вот ярлык, который я быстро установил:
let nameLabel: UILabel = {
let label = UILabel()
label.text = ""
return label
}()
Вот элемент didselect для просмотра коллекции
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])}
}
}
В итоге текст выбранной ячейки меняется на полужирный, но это происходит с задержкой. Мне нужно попытаться выбрать другую ячейку, когда я попытался выделить первую полужирный шрифт. Когда я выбираю ячейку в первый раз, она мигает нужными мне изменениями, но затем возвращается.