как перезагрузить дополнительный вид в collectionView

Есть ли простой способ перезагрузить suppplementary view только в UICollectionViewFlowLayout? Я не хочу перезагружать все это. Можно ли это сделать?

Ответ 1

Просмотрев документацию, я не уверен в перезагрузке отдельного дополнительного представления, но вы можете использовать reloadSections: для обновления 1 или более разделов в UICollectionView. (документация) Поэтому, когда заголовок раздела нуждается в обновлении, вы можете позвонить:

Objective-C:

[self.collectionView reloadSections:[NSIndexSet indexSetWithIndexesInRange:NSMakeRange(0, 3)]];

Swift:

self.collectionView?.reloadSections(IndexSet(0 ..< 3))

Что происходит, чтобы позвонить:

- (UICollectionReusableView *)collectionView: (UICollectionView *)collectionView viewForSupplementaryElementOfKind:(NSString *)kind atIndexPath:(NSIndexPath *)indexPath {

       //Place logic for handling update here...
}

Ответ 2

Если вы хотите изменить макет или размер дополнительного представления из Контроллера, используйте [self.collectionView.collectionViewLayout invalidateLayout] Если вы хотите обновить только дополнительное представление, используйте [supplementaryView setNeedsDisplay] Используйте оба [supplementaryView setNeedsDisplay] если дополнительное представление сложный и/или изменит его размеры.