UICollectionView: Comment obtenir une vue de titre pour la section?

Il y a une méthode d'obtention d'une cellule par
indexPath

/
UICollectionView cellForItemAtIndexPath:

/./, Mais je ne trouve pas de méthode d'obtention de l'une des vues supplémentaires, telles que la tige ou le pied de page, après sa création. Des idées?
Invité:

Blanche

Confirmation de:

Mettre à jour

Commençant par iOS 9, vous pouvez utiliser
http://mayoff-imac.local:53048 ... Path:
Pour une soumission supplémentaire sur le chemin de l'index.

ORIGINAL

Il est préférable de créer votre propre dictionnaire qui compare les chemins d'index sur des idées supplémentaires. Dans votre méthode
collectionView:viewForSupplementaryElementOfKind:atIndexPath:

Placez la vue dans le dictionnaire avant de le renvoyer. Dans votre
collectionView:didEndDisplayingSupplementaryView:forElementOfKind:atIndexPath:

Supprimer la vue du dictionnaire.

Gabriel

Confirmation de:

Je voudrais partager ma compréhension de la décision fournie

Roby Mayoff

, Mais je ne peux pas laisser de commentaire, alors je le mets ici:

Pour chacun de vous qui a essayé de conserver une référence à des soumissions supplémentaires utilisées par la collection, mais qui ont fait face aux problèmes de perte de piste trop tôt en raison de


collectionView:didEndDisplayingSupplementaryView:forElementOfKind:atIndexPath:


Être causé trop souvent, essayez d'utiliser NSMapTable Au lieu d'un dictionnaire.

j'utilise


@property /nonatomic, strong, readonly/ NSMapTable *visibleCollectionReusableHeaderViews;


Créé comme ceci:


_visibleCollectionReusableHeaderViews = [NSMapTable mapTableWithKeyOptions:NSMapTableStrongMemory valueOptions:NSMapTableWeakMemory];


Donc, lorsque vous enregistrez une référence à un look supplémentaire:


- /UICollectionReusableView */collectionView:/UICollectionView */collectionView viewForSupplementaryElementOfKind:/NSString */kind atIndexPath:/NSIndexPath */indexPath
{
// / ... /
[_visibleCollectionReusableHeaderViews setObject:cell forKey:indexPath];


Il ne sauve qu'un lien WEAK sur lui dans NSMapTable Et cela l'enregistre jusqu'à ce que l'objet soit libéré!

Vous n'avez plus besoin de supprimer la vue de la fenêtre.


collectionView:didEndDisplayingSupplementaryView:forElementOfKind:atIndexPath:


dans la mesure où NSMapTable Perd une entrée dès que la vue sera publiée.

Darius

Confirmation de:

La première chose à faire est d'installer la case à cocher "Section Header" Dans l'inspecteur des attributs de la collection de la collection. Ajoutez ensuite une représentation réutilisable de la collection de la même manière que vous avez ajouté votre cellule à la vue de la collection, écrivez l'identifiant et créez une classe pour cela si vous en avez besoin. Puis implémentez cette méthode:


- /UICollectionReusableView */collectionView:/UICollectionView */collectionView viewForSupplementaryElementOfKind:/NSString */kind atIndexPath:/NSIndexPath */indexPath


À partir de là, faites de la même manière que vous avez fait avec cellForItemAtIndexPath
Il est également important de spécifier si ce haut ou le pied de page est écrit sur:


if/[kind isEqualToString:UICollectionElementKindSectionHeader]/
{
Header *header = [collectionView dequeueReusableSupplementaryViewOfKind:UICollectionElementKindSectionHeader withReuseIdentifier:@"headerTitle" forIndexPath:indexPath];
//modify your header
return header;
}

else
{

EntrySelectionFooter *footer = [collectionView dequeueReusableSupplementaryViewOfKind:UICollectionElementKindSectionFooter withReuseIdentifier:@"entryFooter" forIndexPath:indexPath];
//modify your footer
return footer;
}


Utilisation indexpath.section, Pour savoir dans quelle section c'est,
Notez également que Header et EntrySelectionFooter - Ce sont des sous-classes personnalisées UICollectionReusableView, que j'ai fait

Blanche

Confirmation de:

Cette méthode est souvent utilisée pour redémarrer une vue supplémentaire sur l'écran:


collectionView.visibleSupplementaryViews/ofKind: UICollectionElementKindSectionHeader/

Pour répondre aux questions, connectez-vous ou registre