UICollectionView Plusieurs Sections et les en-Têtes
J'ai du mal à essayer de faire plusieurs articles dans ma collection vue avec un en-tête de chaque section. Je ne sais pas l'Obj-C et j'ai trouvé une bonne quantité de tutoriels pour elle, mais je n'ai pas été en mesure de comprendre comment le convertir en Swift.
Toutes mes données est statique donc tout ce que je besoin est une sorte de tableau ou de dictionnaire que je peux utiliser pour créer plusieurs sections. J'ai déjà une vue de collection avec 1 section de travail, donc si vous avez une intuition ou de code pour plusieurs sections qui serait utile.
Je sais faire plusieurs sections à l'aide de
func numberOfSectionsInCollectionView(collectionView: UICollectionView) -> Int {
return sectionData.count
}
Je pense que la principale chose que j'ai besoin d'aide avec la mise en oeuvre de cette func
func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell { }
et configuration des données!
UICollectionView et UITableView sont presque exactement les mêmes, donc si vous savez comment le faire de plusieurs sections dans un UITableView dans Swift, votre aide est très appréciée
viewDidLoad
. Récupération de données dans la source de données méthodes est alors très facile.Compris basé sur votre tutoriel!
Excellent, merci de me le faire savoir!
OriginalL'auteur user3399235 | 2015-01-23
Vous devez vous connecter pour publier un commentaire.
La
cellForItemAtIndexPath
fonction gère le remplissage de chaque section avec des cellules, il ne gère pas les articles ou supplementaryViews, et n'est donc pas la principale chose que vous avez besoin d'aide quand il s'agit de la création d'en-têtes de section.la méthode que vous devez mettre en œuvre
viewForSupplementaryElementOfKind
. Sa signature est:En supposant que votre collectionView fonctionne correctement pour 1 article (que vous avez correctement rempli le corps de votre cellForItemAtIndexPath et votre sectionData tableau reflète bien le nombre de sections que vous souhaitez afficher), vous devez être en mesure de mettre en œuvre des en-têtes de section en utilisant les pointeurs suivants:
Avec les cellules,
UICollectionView
prend également en charge "supplémentaire" visualiser les objets, généralement utilisé pour les en-têtes ou pieds de page. Ces nouvelles Vues loi très similaire àUICollectionViewCell
objets. De la même manière quecellForItemAtIndexPath
poignées de cellules, LaviewForSupplementaryElementOfKind
fonction des poignées supplémentaires vues.Pour la mettre en œuvre, vous devez d'abord préparer votre ViewController de le faire. D'abord modifier votre objet de mise en page pour rendre compte de l'en-tête de taille, que chaque tête adhérer à:
NOTE: je suis à l'aide d'un UICollectionViewFlowLayout
Prochaine, si vous ne l'avez pas déjà fait, créez un SectionHeader classe qui définit chaque section en-tête de l'objet, de sorte que vous pouvez ensuite enregistrer cette classe avec votre collectionView objet:
Ici, la première et la troisième argument passé sont les mêmes que pour un UICollectionViewCell enregistrement de Classe, le premier argument de cette méthode est la référence à la section d'en-tête de classe que vous avez créé. La troisième est la réutilisation de l'identificateur pour le Complémentaire de Vue.
Le deuxième argument est spécifique Supplémentaire de points de Vue, ce jeux, le genre de la SupplementaryView, qui dans ce cas est un en-tête, la constante chaîne de caractères fournie par le UICollectionViewFlowLayout classe
UICollectionElementKindSectionHeader
est utilisé pour cela. Si vous avez remarqué les paramètres sur laviewForSupplementaryElementOfKind
, ce genre est ensuite transmis en tant quekind: String
paramètre.Remplir le corps de votre
viewForSupplementaryElementOfKind
la même manière que vous le feriez pour un cellForItemAtIndexPath fonction-- à l'Aide de ladequeueReusableSupplementaryViewOfKind
méthode pour créer un SectionHeader objet, définissez les attributs (étiquettes, couleurs, etc.) et enfin le retour de l'en-tête de l'objet.Espérons que cette aide!!
Points de référence:
https://developer.apple.com/library/prerelease/ios/documentation/UIKit/Reference/UICollectionViewDataSource_protocol/index.html#//apple_ref/occ/intfm/UICollectionViewDataSource/
https://developer.apple.com/library/ios/documentation/UIKit/Reference/UICollectionViewFlowLayout_class/index.html#//apple_ref/c/data/UICollectionElementKindSectionHeade
la partie n'est pas de travail pour vous?
Il fonctionne comme prévu. Le seul piège est que la section de la Classe doit être une sous-classe ob ReusableView.
très bien expliqué
OriginalL'auteur mkncode
Voici le code qui a fonctionné pour moi
créer la cellule d'en-tête. À faire que j'ai créé une cellule personnalisé de classe et une plume pour faire de la personnalisation de la cellule dans l'éditeur graphique
Dans le viewDidLoad ajouter le suivant
Puis vous ajoutez la fonction de délégué
Cela mettra le HeaderCell dans le SectionView de la PFCollectionView
Les contrôles qui montrent dans la cellule de les ajouter au fichier xib ainsi que les prises et les actions
OriginalL'auteur lguerra10
Après la création et l'enregistrement d'en-tête personnalisé (et/ou des pieds de page), vous pouvez facilement spécifier l'en-tête (ou pieds de page) pour différentes sections. Voici un exemple:
Assurez-vous de spécifier le nombre correct de sections, de trop:
OriginalL'auteur sean
Définir votre UICollectionViewCell qui sera votre vue d'en-Tête de type UICollectionElementKindSectionHeader - Dans mon cas j'ai deux têtes - OfferHeaderCell et APRHeaderCell défini comme ci-dessous:
Aller de l'avant et de retour d'un en-tête de chaque section, puis de définir la taille de l'en-tête de section pour avoir une taille de zéro dans ce UICollectionViewDelegateFlowLayout fonction
Important de définir le viewForSupplementaryElementOfKind pour les deux sections différentes, comme ci-dessous:
Et enfin la source de données,
Remarque: N'oubliez pas d'ajouter UICollectionFlowLayout comme ci-dessous:
//MARQUE: UICollectionViewDelegateFlowLayout
OriginalL'auteur Tarun
Travaillé solution pour Swift-3
i)Créer de Cellule Personnalisé && correspondant xib
ii)Registre de Collection Personnalisée de Vue de la Cellule pour HeaderView
iii)Appel de fonction de délégué à de rendu Personnalisé en-Tête de la Vue.
iv)la Mention de la Hauteur de l'en-Tête Personnalisé Vue
OriginalL'auteur Shrawan
@Tarun réponse travaillé un régal pour moi; j'ai été absent
collectionView(_:layout:referenceSizeForHeaderInSection:)
dont j'avais besoin depuis parfois les données à être démontré, triés et parfois pas.En outre, l'épinglage de la section d'en-tête en haut de l'écran (comme dans le tableau afficher le Carnet d'Adresses d'Apple app) a été réalisée en ajoutant ce qui suit à
viewDidLoad()
dans le UICollectionViewController:OriginalL'auteur Glenn