Я построил UICollectionView
в раскадровке и реализовал все необходимые методы источника данных и делегата в контроллере представления. В раскадровке я проверил свойство Section Header
в представлении коллекции и установил класс представления заголовка в подкласс UICollectionResusableView
(в раскадровке).
Отсюда я перетащил два элемента пользовательского интерфейса в представление заголовка через раскадровку — метку и сегментированный элемент управления:
Когда программа выполняется, метка появляется в представлении заголовка представления коллекции (фактический код не требуется), а сегментированный элемент управления — нет. Однако когда сегментированный элемент управления перетаскивается на типичный UIView
, он отображается и им можно манипулировать без необходимости кода. Даже при создании экземпляра с помощью кода в IBOutlet
сегментированный элемент управления не отображается.
Почему сегментированный элемент управления не отображается в заголовке представления коллекции, когда он находится в типичном UIView
, и почему метка отображается без проблем?
ОБНОВЛЕНИЕ
Вот метод инициализации пользовательского представления заголовка, в котором я попытался программно добавить сегментированный элемент управления (в отличие от раскадровки):
- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
_segmentedControl = [[UISegmentedControl alloc] initWithItems:[NSArray arrayWithObjects:@"One", @"Two", nil]];
[_segmentedControl setFrame:CGRectMake(0, 0, 100, 50)];
[_segmentedControl addTarget:self action:@selector(segmentedControlChanged:) forControlEvents:UIControlEventValueChanged];
[self addSubview:_segmentedControl];
}
return self;
}
Как и просили, вот метод -[UICollectionReusableView viewForSupplementaryElementOfKind:]
в контроллере основного представления:
- (UICollectionReusableView *)collectionView:(UICollectionView *)cv viewForSupplementaryElementOfKind:(NSString *)kind atIndexPath:(NSIndexPath *)indexPath {
GalleryHeader *headerView = [cv dequeueReusableSupplementaryViewOfKind:UICollectionElementKindSectionHeader withReuseIdentifier:@"HeaderView" forIndexPath:indexPath];
return headerView;
}
uicollectionviewdatasource
collectionView:viewForSupplementaryElementOfKind:atIndexPath:
? - person micantox   schedule 18.06.2013