0

J'essaie de personnaliser mes boutons en utilisant une catégorie mais je ne veux pas que tous mes boutons dans mon projet utilisent cette catégorie. Est-il possible de laisser le bouton savoir qu'il devrait/ne devrait pas utiliser la catégorie (comme une sorte de bool isUsingCategory). Si non, quelle est la meilleure façon de s'y prendre? Je le sous-classerais mais j'entends que sous-classer UIButton est une mauvaise idée. Existe-t-il un moyen d'exclure des catégories de certains objets? Merci!Comment personnaliser UIButton

EDIT: Ce que j'ai en ce moment qui fonctionne est dans mon contrôleur en cours d'exécution d'une méthode spéciale pour dessiner les boutons, mais je ne pense pas que cela suit très bien MVC.

+0

Si vous ne faites que personnaliser l'apparence, vous pouvez utiliser le proxy 'appearance'. Mais malheureusement, cela affectera tous les objets UIButton. La meilleure façon de différencier _is_ à subclass. Pourquoi est-ce censé être mauvais? – matt

+0

Ooooh Je pensais à une autre façon. Créez une sous-classe UIView personnalisée. Appelons-le MyButtonContainer. Faire tous les boutons que vous souhaitez personnaliser sous-vues d'un MyButtonContainer, qui est lui-même peut être invisible (effacer) de sorte que cela n'affecte rien. Maintenant, le proxy 'apparence' a un moyen de choisir les bons boutons. – matt

+0

http://stackoverflow.com/questions/13202161/why-shouldnt-i-subclass-a-uibutton – GnarGnar

Répondre

0

Vous avez juste besoin hériter de la UIButton (par exemple MyButton) et ajouter une propriété quelque chose comme ceci:

@property (nonatomic, assign) BOOL useCategoryBehavior; 

Dans la catégorie des MyButton utilisation de cette propriété avant de faire quelque chose dans méthodes substituées. Comme ceci:

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    if (useCategoryBehavior) { 
     // do smth here 
    } 
}