UICollectionView & amp; UICollectionReusableView personnalisé ne fonctionne pas
Je suis en train d'utiliser personnalisée UICollectionReusableView
(qui a la même catégorie et XIB) dans mon UICollectionView
en-tête. Mais après l'extraction de données à la place de la tête, je n'ai rien.
Mon étapes:
- L'enregistrement de classe dans viewDidLoad:
[self.collectionView registerClass:[CollectionViewHeader class] forSupplementaryViewOfKind: UICollectionElementKindSectionHeader withReuseIdentifier:@"HeaderView"];
- En essayant de montrer:
- (UICollectionReusableView *)collectionView:(UICollectionView *)collectionView viewForSupplementaryElementOfKind:(NSString *)kind atIndexPath:(NSIndexPath *)indexPath { UICollectionReusableView *reusableView = nil; if (kind == UICollectionElementKindSectionHeader) { CollectionViewHeader *collectionHeader = [self.collectionView dequeueReusableSupplementaryViewOfKind:UICollectionElementKindSectionHeader withReuseIdentifier:@"HeaderView" forIndexPath:indexPath]; NSInteger section = [indexPath section]; id <NSFetchedResultsSectionInfo> sectionInfo = [fetchRecipes sections][section]; collectionHeader.headerLabel.text = @"bla-bla-bla"; reusableView = collectionHeader; } return reusableView; }
Quelqu'un peut-il me dire quel est le problème? )
Merci pour tous les conseils
source d'informationauteur Romowski
Vous devez vous connecter pour publier un commentaire.
Je pense que vous êtes l'ajout à l'étiquette de la xib. Si vous avez besoin de registerNib: pour la vue d'en-tête au lieu de registerClass:
Enregistrer Votre en-tête plume/xib dans le viewDidLoad section.
Créer la coutume complémentaire en vue de la cellule.
Juste au cas où si quelqu'un a besoin de solution.
Vous n'avez pas à enregistrer l'en-tête de la classe à l'aide de
Suffit d'utiliser la mise en page du délégué méthode retourne l'en-tête de la classe.
Effectivement il y a peut être quelques raisons:
(le plus courant)
Si u ajouter u r
suplementaryView
dans le storyboard, puis essayez de la classe de registreu obtiendrez
suplementaryView
mais pas que u créer (en standard) - u verra obj, mais c'est en réalité sera comme un espace réservé.Exemple:
Ici u peut voir que obj a été créé, mais les prises sont de néant (dans ce cas simple d'une seule prise -
_monthNameLabel
).Si u créer des
Obj
pour la manipulation de dataSourse/délégué pourcollectionView
et ajouter une référence prise à elle, et eninit
méthodes d'essayer d'enregistrer classe u t o u r de sortie (supposé que la vue créée en séparer plume de fichier), u recevrez également même résultat, comme le précédent, mais la raison l'autre - u r'prise de courant est nul ici:Comme solution u, par exemple, peut utiliser des setter comme:
u peut utiliser
registerClass
au lieu deregisterNib
Xcode 9, Swift 4:
Registre
UICollectionReusableView
dansviewDidLoad
Vous a été enregistrer correctement la classe et le délégué est correctement mis en œuvre.
Le problème peut être que le flux de mise en page (par défaut) n'est pas configuré pour la vue d'en-tête, vous avez cette ligne dans le code ou le fichier d'interface?