2017-09-03 3 views
0

J'ai beaucoup de nombreux UILabels existants dans un projet que je veux sous-classer. Plutôt que de passer des journées en passant par tous individuellement dans leur mise IB à mon UILabel sous-classe veulent les définir par programmeDéfinir tous les UILabels à la sous-classe par programme

Contrôlé ici: How to programmatically set custom class?

Couple de suppositions a essayé: UILabel_setClass(self.contentView, [MyLabel class]); - erreur de déclaration implicite

et :

 Class lbl = [[MyLabel alloc] init]; 

     for (id view in [self.contentView subviews]) { 
      if ([view isKindOfClass:[UILabel class]]) { 

       //....sub it here? 

       } 
     } 

Répondre

-1

Tout d'abord, c'est une très mauvaise idée de changer de classe d'objet. C'est un genre de code de l'odeur. Si à l'avenir un nouveau développeur utilise la classe par défaut UILabel, il peut avoir des erreurs étranges. Runtime - est une grande et pire caractéristique de l'objectif-C. Il peut créer des bogues cachés dans de mauvaises mains. Alors utilisez-le très soigneusement et deux fois pensez - en avez-vous vraiment besoin dans le projet. Et mieux - écrivez votre code explicite, utiliser des modèles de conception, etc

Dans votre question n'est pas clair pourquoi avez-vous besoin de changer la classe d'objet. Si vous en avez besoin pour modifier l'apparence, utilisez UIAppearance. Si vous avez besoin d'étendre les fonctionnalités, utilisez Extensions.

+0

c'est une circonstance unique et UIAppearance ne fonctionnera pas en raison d'un problème lors de l'impression au format PDF. Les motifs de conception, etc., sont parfaits lorsque vous ne travaillez pas sur un projet existant en situation réelle – JSA986