我UICollectionView
在情节提要中构建了一个,并在视图控制器中实现了所有必需的数据源和委托方法。在情节提要中,我检查了Section Header
集合视图上的属性并将标题视图的类设置为UICollectionResusableView
(在情节提要中)的子类。
从这里,我通过故事板将两个 UI 元素拖到标题视图中——一个标签和一个分段控件:
执行程序时,标签出现在集合视图的标题视图中(不需要实际代码),但分段控件不会。然而,当一个分段控件被拖到一个典型的UIView
. 即使通过 中的代码实例化IBOutlet
,分段控件也不会出现。
为什么分段控件在典型的集合视图的标题上不可见UIView
,为什么标签显示没有问题?
更新
这是自定义标题视图的 init 方法,我尝试以编程方式添加分段控件(而不是在情节提要中):
- (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;
}