Обновлять заголовок CollectionView AdditionalView, когда он выключен - PullRequest
0 голосов
/ 29 сентября 2018

У меня есть вид, похожий на ленту главных историй Instagram.У меня есть горизонтальное представление коллекции вверху, где у меня есть ячейка заголовка AdditionalView, которая выглядит так же, но действует по-разному с остальными ячейками.

Я пытаюсь обновить объекты в дополнительном окне, что мне удалось сделать с помощью следующего кода ...

@objc func uploadCompleted() {

    DispatchQueue.main.async {
        self.collectionView.performBatchUpdates({
            if let myCell = self.collectionView.supplementaryView(forElementKind: UICollectionElementKindSectionHeader, at: IndexPath(item: 0, section: 0)) as? MyCollectionReusableView {
                // Do your stuff here
                myCell.nameLbl.textColor = .black
                ...
            }
        }, completion: nil)
    }
}

Это прекрасно работает, когда отображается ячейка, однако, когдаво время этого звонка ячейка удаляется с экрана, она не обновляется.

Есть идеи, как это обойти?Или лучший подход к обновлению только первой ячейки в представлении коллекции, а не остальных.

Спасибо

1 Ответ

0 голосов
/ 29 сентября 2018

Заголовок не ноль, когда он виден, вам нужно

var color = UIColor.red

И внутри viewForSupplementaryElementOfKind

func collectionView(_ collectionView: UICollectionView, 
     viewForSupplementaryElementOfKind kind: String, 
                      at indexPath: IndexPath) -> UICollectionReusableView 
   let  myCell = //
   myCell.nameLbl.textColor = color
   return myCell
}

Затем измените color, где и когда вы хотите после появления заголовкаснова он будет изменен на последний цвет

@objc func uploadCompleted() {

    DispatchQueue.main.async {
        self.color = UIColor.black
        self.collectionView.performBatchUpdates({
            if let myCell = self.collectionView.supplementaryView(forElementKind: UICollectionElementKindSectionHeader, at: IndexPath(item: 0, section: 0)) as? MyCollectionReusableView {
                // Do your stuff here
                myCell.nameLbl.textColor = self.color
                ...
            }
        }, completion: nil)
    }
}
...