Question

Je sais que UicollectionviewdeelegateflowleAayout est un protocole tandis que UicollectionviewflowLayout est une classe et je connais la différence entre un protocole et une classe. De ma compréhension, je peux avoir une classe pour suivre le protocole UicollectionviewelegateflowLayout pour atteindre exactement le même effet que d'avoir une classe héritée à partir d'Uicollectionviewflockayout. J'atteint cette conclusion en trouvant de telles relations entre le protocole et la classe: UicollectionviewelegateflowleAjouter ------------- Uicollectionviewflowlue CollectionView: mise en page: TIZEFORITEMATINDEXPATH: ---- Article CollectionView: mise en page: INSETFORSectionAdex: ---- SectionNetSet - CollectionView: Disposition: RéférencesFoDreunSection: - HeaderReFerFerences - CollectionView: mise en page: référencesfooterfooterinsection: - FeatherreFerencesSize

Je lis également ce qui suit dans la référence du protocole: "Toutes les méthodes de ce protocole sont facultatives. Si vous ne mettez pas en place une méthode particulière, le délégué de la disposition de flux utilise des valeurs dans ses propres propriétés pour les informations d'espacement appropriées" Donc, ma compréhension est la suivante: Si une collectionView a une propriété de mise en page et un déléguéflowaloue, le déléguéflowlayouout peut potentiellement écraser quelque chose. En d'autres termes, je peux avoir les deux et le protocole prendra une priorité plus élevée. Droite?

Alors, quelle est la logique de l'inventer un protocole et une classe qui fait la même chose?

Était-ce utile?

La solution

La classe de mise en page de flux est une sorte de disposition de débit "par défaut" qui fonctionne dans beaucoup, sinon la plupart des cas. Si vous avez besoin de quelque chose que UicollectionviewflowlowleOwholdout peut ne pas gérer, vous pouvez alors sous-classement uicollectionviewLayout pour fournir la fonctionnalité ajoutée.

Les méthodes des délégués offrent simplement une personnalisation limitée, via les appels de délégués, pour l'uicollectionviewflowLowLOWLOWLOWLOWLOWLOWLOWLOWED.

de la DOCS, "Le protocole UicollectionviewelegateflowLayout définit des méthodes qui vous permettent de vous coordonner avec un objet UicollectionviewflowLueTOut pour mettre en œuvre une disposition basée sur la grille. Les méthodes de ce protocole définissent la taille des éléments et l'espacement entre les éléments de la grille". / p>

Ils ne font pas les mêmes choses; Le protocole est fourni pour vous permettre de faire quelque chose de plus que la disposition de flux sans les méthodes de délégation ne fonctionne pas par défaut. Le protocole, en effet, vous donne plus de "contrôle". Vous n'avez pas à utiliser les méthodes déléguées si vous n'en avez pas besoin.

Il n'y a pas de "priorité"; Le protocole est facultatif. Donc, vous n'utilisez pas le protocole si vous n'utilisez pas UicollectionviewflowLAYOUNT.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top