UICollectionView: обновить раздел FooterTitles - PullRequest
0 голосов
/ 17 сентября 2018

Я использую UICollectionView для пользовательского интерфейса Messenger. Нижний колонтитул раздела отображает время отправки сообщения. Однако я хочу отобразить его только тогда, когда предыдущее сообщение было отправлено более 15 минут назад.

Поэтому я хочу обновлять нижние колонтитулы каждый раз, когда отправляется сообщение. Однако как я могу обновить заголовки нижнего колонтитула раздела?

Я пробовал self.collectionView.reloadData(), однако он не обновляет нижние колонтитулы (установите их в ""). (Когда я прокручиваю вверх и вниз, они исчезают, поэтому логика работает.)

Знаете ли вы, как обновить заголовки нижнего колонтитула?

1 Ответ

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

Предположим, вы настраиваете свой collectionView следующим образом

enter image description here

Вы используете макет потока по умолчанию.так что вы можете добавлять метки в верхний и нижний колонтитулы.и в метке нижнего колонтитула установите для этого тега значение 1001 (или любое другое число, которое вам нравится).

Идентификатор заголовка - «заголовок», а нижний колонтитул - «нижний колонтитул».UICollectionElementKindSectionHeader определен в классе макета потока (см. Документацию.)

enter image description here

Теперь вы можете перезагрузить верхний и нижний колонтитулы следующим образом:

override  func collectionView(_ collectionView: UICollectionView, viewForSupplementaryElementOfKind kind: String, at indexPath: IndexPath) -> UICollectionReusableView{
let cell = collectionView.dequeueReusableSupplementaryView(ofKind: kind, withReuseIdentifier: (kind == UICollectionElementKindSectionHeader ?  "header": "footer"), for: indexPath)
// Configure the cell
return cell
}

Когда вы пытаетесь изменить содержимое меток в нижнем колонтитуле, вам не нужно обновлять нижний колонтитул.Вы можете позвонить в любое место в вашем приложении.Я называю это формой ячейки для удобства выполнения теста.

 override func collectionView(_ collectionView: UICollectionView, shouldSelectItemAt indexPath: IndexPath) -> Bool {
let footView =   collectionView.supplementaryView(forElementKind: UICollectionElementKindSectionFooter, at: IndexPath.init(row: 0, section: 1))
    if let label =  footView?.viewWithTag(1001) as? UILabel{
    label.text = "AnyThing"
    }

Здесь я использую IndexPath.init (строка: 0, раздел: 1), который является вторым разделом.Теперь вы видите результат.

enter image description here

Это самый простой пример.CollectionView может быть очень сложным и стоить книгу для всех видов приложений и примеров.Надеюсь, это поможет вам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...