comment définir UIButton type dans UIButton sous-classe
Je suis dérivation de l'UIButton, ce que je veux, c'est de définir le type de bouton Round Rect.
Bouton.h
@interface Button : UIButton {}
- (void)initialize;
@end
Bouton.m
@implementation Button
- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
[self initialize];
}
return self;
}
-(id)initWithCoder:(NSCoder *)aDecoder {
self = [super initWithCoder:aDecoder];
if(self){
[self initialize];
}
return self;
}
- (void)initialize
{
self.titleLabel.font = [UIFont systemFontOfSize:20];
self.titleLabel.textColor = [UIColor redColor];
self.titleLabel.textAlignment = UITextAlignmentCenter;
//[UIButton buttonWithType:UIButtonTypeRoundedRect];
}
@end
Ici, j'ai essayé [UIButton buttonWithType:UIButtonTypeRoundedRect]
mais ça ne fonctionne pas. Quelqu'un peut-il suggérer comment le faire fonctionner?
Je sais que dans de nombreux post précédent il a été dit que le sous-classement UIButton n'est pas recommandé, mais le fait que les Développeurs de Docs il n'y a aucune mention au sujet de ne PAS sous-classement.
Ce que je vous vraiment essaie de faire? Je sais, vous l'avez dit, vous voulez placer le bouton type, mais je ne crois pas que vous. Vous avez une idée pour votre INTERFACE utilisateur et vous essayez de l'atteindre avec un sous-classement UIButton et la définition de son type..., mais vous ne serez pas. Alors dites-nous, ce que l'on va, et je suis sûr qu'il y aura une solution différente de votre approche.
mais vous ne.. :s bien, rien de spécial, juste de la création de la sous-classe pour que je puisse manipuler les boutons tout au long de l'app..!
Pourquoi avez-vous besoin d'une sous-classe pour manipuler les boutons? Le UIButton interface semble suffisante pour que.
double possible de sous-classe UIButton pour ajouter une propriété. Aussi créer déboutonner la sous-classe et sous-classement UIButton, mais ne peut pas accéder à mon propriétés.
De sorte que les boutons restent constantes tout au long de l'application. De sorte que quand je dois changer la taille de police de tous les boutons je n'ai pas à le changer partout où je l'ai utilisé. etc.
mais vous ne.. :s bien, rien de spécial, juste de la création de la sous-classe pour que je puisse manipuler les boutons tout au long de l'app..!
Pourquoi avez-vous besoin d'une sous-classe pour manipuler les boutons? Le UIButton interface semble suffisante pour que.
double possible de sous-classe UIButton pour ajouter une propriété. Aussi créer déboutonner la sous-classe et sous-classement UIButton, mais ne peut pas accéder à mon propriétés.
De sorte que les boutons restent constantes tout au long de l'application. De sorte que quand je dois changer la taille de police de tous les boutons je n'ai pas à le changer partout où je l'ai utilisé. etc.
OriginalL'auteur Haris Hussain | 2012-04-23
Vous devez vous connecter pour publier un commentaire.
Vous pouvez trouver à la discussion, au CocoaBuilder fil Comment la sous-classe UIButton? utile, en particulier Jack Nutting la suggestion d'ignorer la buttonType:
OriginalL'auteur Caleb
pas tout à fait ce que vous cherchez, mais rappelez-vous que votre sous-classe a encore le buttonWithType méthode, et il fonctionne très bien.
buttonWithType appels de vos sous-classes initWithFrame, et définit le type de la manière appropriée.
OriginalL'auteur Confused Vorlon
UIButton
sous-classe de Swift*Le code suivant fonctionne dans Swift 3 et ci-dessus.
Vous ne pouvez pas définir la
buttonType
d'unUIButton
sous-classe de par leur conception. Il est automatiquement mis àcustom
qui signifie que vous obtenez une simple apparence et le comportement en tant que point de départ.Si vous souhaitez réutiliser le code qui définit le bouton de son apparence, vous pouvez le faire sans le sous-classement. Une approche consiste à fournir à l'usine des méthodes qui créent un
UIButton
et définissez les propriétés visuelles.Exemple de l'usine de méthode pour éviter de sous-classement
- Je éviter de sous-classement
UIButton
lorsque d'autres techniques de personnalisation suffire. La méthode de l'exemple est une option. Il y a d'autres options, y compris les UIAppearance API, etc.Parfois, il y a la personnalisation des besoins qui nécessitent de sous-classement. Par exemple, j'ai créé
UIButton
des sous-classes pour prendre un contrôle précis sur la façon dont le bouton anime en réponse à des événements tactiles ou avoir le bouton d'appel de l'avancement du délégué ou de la fermeture de gemmage (par opposition à l'attribution d'un#selector
pour chaque instance).Ce qui suit est une base
UIButton
sous-classe exemple comme point de départ.Exemple UIButton Sous-Classe
Une remarque à propos de
UIButtonType
Depuis que la question a été posée en 2012,
UIButtonType.roundedRect
a été désapprouvée. L'en-tête du fichier de commentaires disent utiliserUIButtonType.system
à la place.Ce qui suit est UIButton.h converti à Swift dans Xcode
OriginalL'auteur Mobile Dan
Avec iOS7, c'est plus pertinent qu'avant, que parfois vous besoin à utiliser UIButtonTypeSystem, et vous ne pouvez pas simplement les remplacer init et ne [MyButton alloc] init], parce que c'est un UIButtonTypeCustom, qui ne reflète pas la nuance de couleur ni de nice en évidence des effets de fondu.
À la sous-classe, faire un constructeur statique comme suit:
OriginalL'auteur Chris
Vous pouvez certainement sous-classe UIButton. J'ai réussi à créer un DateButton qui ressemble à un UITextField mais, lorsque l'utilisateur touche elle affiche un DatePicker dans une Liste. A une propriété pour le stockage de la Date, etc. Laissez-moi savoir si ce qui précède ne jamais résolu votre problème et je vais poster plus de détails.
OriginalL'auteur Duncan Groenewald
Quoi à ce sujet?
[UIRoundedRectButton initialiser]: unrecognized sélecteur envoyé à l'instance 0x8a406a0
essayez de vous ajouter du code dans initWithFrame:...
il travail sur initWithFrame mais comment travailler sur InitWithCoder? sinon merci de le conserver ou de fuites~~
est une méthode de classe, pas une méthode d'instance. Voir Objective-C: init vs initialiser pour une explication. À l'aide d'une méthode d'instance avec le même nom pourrait fonctionner, mais il peut également être une partie de votre problème.
OriginalL'auteur Chakalaka