Ho unoin uno dei miei viewcontroller
. La mia vista raccolta utilizza una sottoclasse di UICollectionViewLayout
(personalizzata) per il layout delle celle. Per prima cosa, non appena seleziono Layout come personalizzato nel menu a discesa sullo storyboard, l'opzione per selezionare le viste supplementari scompare.Come aggiungere l'intestazione a livello di codice su UICollectionView con UICollectionViewLayout
Ho provato a farlo programmaticamente come mostrato di seguito, ma nessuno dei metodi delegati viene chiamato.
- (UICollectionReusableView *)collectionView:(UICollectionView *)collectionView viewForSupplementaryElementOfKind:(NSString *)kind atIndexPath:(NSIndexPath *)indexPath
{
if (kind == UICollectionElementKindSectionHeader) {
UICollectionReusableView *reusableview = [collectionView dequeueReusableSupplementaryViewOfKind:UICollectionElementKindSectionHeader withReuseIdentifier:@"HeaderView" forIndexPath:indexPath];
if (reusableview==nil) {
reusableview=[[UICollectionReusableView alloc] initWithFrame:CGRectMake(0, 0, 320, 44)];
}
UILabel *label=[[UILabel alloc] initWithFrame:CGRectMake(0, 0, 320, 44)];
label.text=[NSString stringWithFormat:@"Recipe Group #%li", indexPath.section + 1];
[reusableview addSubview:label];
return reusableview;
}
return nil;
}
- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout referenceSizeForFooterInSection:(NSInteger)section {
CGSize headerSize = CGSizeMake(320, 44);
return headerSize;
}
nel mio metodo viewDidLoad devo
[self.collectionView registerClass:[UICollectionReusableView class] forSupplementaryViewOfKind:UICollectionElementKindSectionHeader withReuseIdentifier:@"HeaderView"];
Qualcuno mi può punto dove sto rovinare?
hanno impostato delegato alla visualizzazione collezione? - 'collectionView setDelegate:' - 'collectionView setDataSource:' – james075
Sì, l'origine dati è impostata. Vengono chiamati tutti gli altri metodi dell'origine dati. –
Non aggiungere l'etichetta ogni volta. Finirai con le etichette sopra le etichette. Sarà necessario creare una sottoclasse con l'etichetta come proprietà, o impostarla nell'istruzione if se sarà statica. – Sean