Pourquoi ne devrais-je pas la sous-classe des UIButton?
J'ai posé quelques questions sur stack overflow sur sous-classement d'un UIButton
, et un couple de personnes m'ont informé que je ne devrais pas sous-classe d'une UIButton
.
Quels sont les aspects négatifs de la sous-classement d'un UIButton
? Et je sais que c'est vague, mais ce sont d'autres alternatives de sous-classement d'un UIButton
?
- Quelle est votre raison d'une sous-classe UIButton? Spécifier le type de bouton
custom
. Quoi d'autre est nécessaire? - J'ai demandé plus juste si je veux à la sous-classe dans le futur, pourquoi je ne devrais pas le faire. Mais maintenant, je vais avoir environ 20 boutons dans mon application qui ont le même arrière-plan, la police, le rembourrage de la taille du texte, etc. Donc, je voulais même un certain temps et le code par le sous-classement.
- Il n'y a aucune raison que vous ne pouvez pas sous-classe UIButton. En fait, je fais en sorte que je peux utiliser de l'IB pour définir le look de mon bouton. Pourquoi? La flexibilité de conception. Beaucoup de gens ont sous-classé UIButton. J'ai sous-classé UIButton. Cette conviction qu'il ne peut pas est quelque chose qui se répété mais manque de preuve.
- Sous-classement
UIButton
est que d'autres éléments tout à fait bien. Mais pour les plus complexes de sous-classement (comme des étiquettes personnalisées, imageViews etc.)UIControl
sous-classe est toujours la meilleure idée.
Vous devez vous connecter pour publier un commentaire.
Le Cacao cadres à la démarche que l'Objet de la Composition est plus approprié que les traditionnels hiérarchie de classe.
En général, cela signifie qu'il est susceptible d'être une propriété sur UIButton où vous pouvez définir un autre objet permettant de gérer les différents aspects de la touche. C'est la meilleure façon de le "personnaliser" comment votre bouton fonctionne.
L'une des principales raisons de cette tendance est que de nombreux composants de la bibliothèque de créer des boutons et je ne sais pas ce que vous voulez pour créer des instances de votre sous-classe.
modifier, votre propre méthode de fabrique
J'ai remarqué que votre commentaire ci-dessus sur le gain de temps lorsque vous avez le même bouton config à travers de nombreux boutons dans votre application. C'est un moment idéal pour utiliser la Méthode de modèle de conception, et en Objective-C, vous pouvez mettre en œuvre avec une Catégorie de sorte qu'il est disponible directement sur UIButton.
UIButton
est effectivement idiosyncrasique à cet égard. je certainement ne pas downvote parce que votre post ne faire de bons points (en fait, je upvoted).C'est parce que
UIButton
est une sorte de spécial en ce sens qu'il y a quelques complexités/subtilités/restrictions (c'est à dire supplémentaire des remplacements pour vous de définir, notamment+buttonWithType:
) nécessaire pour qu'il fonctionne comme prévu. C'est plus que l'habitude-initWithFrame:
(et-initWithCoder:
, si elle est utilisée dans XIBs). IDK pourquoi le cadre auteurs, les détails de la fuite dans notre domaine, mais c'est quelque chose qui doit être traitée avec nous maintenant. La seule restriction est que votre application ne doit pas dépendre d' (prolongation) système de preset styles de bouton; Vous devez assumerUIButtonTypeCustom
comme votre point de départ pour uneUIButton
sous-classe.Sur la mise en œuvre d'une sous-classe de
UIButton
Si vous êtes simplement à la recherche de quelque chose de plus léger, avec votre propre sous-vues " vous devriez plutôt être sous-classement UIControl. UIButton sous-classes UIControl et peut gérer des événements, comme:
UIControl sous-classes UIView de sorte que vous pouvez proprement layoutSubviews sur tous les points de vue contenus par votre UIControl sous-classe et d'éviter les points de vue qui viennent avec UIButton. En essence, vous êtes juste de créer votre propre "UIButton", mais de vous éviter d'avoir à contourner le comportement et les fonctionnalités que vous n'avez vraiment pas besoin.