Есть ли простой способ перезагрузить suppplementary view только в UICollectionViewFlowLayout? Я не хочу перезагружать все это. Можно ли это сделать?
как перезагрузить дополнительный вид в collectionView
Ответ 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]
если дополнительное представление сложный и/или изменит его размеры.