Ho un UIButton sottoclasse che carica un Pennino:Come utilizzare un UIButton personalizzato con Interface Builder?
@implementation BlaButtonVC
- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
NSArray *subViews = [[NSBundle mainBundle] loadNibNamed:@"BlaButton" owner:self options:nil];
[self addSubview:subViews[0]];
}
return self;
}
@end
E posso aggiungere questo pulsante per una vista, come questo:
// ViewController.m
BlaButtonVC *button = [[BlaButtonVC alloc] initWithFrame:CGRectMake(10, 10, 280, 44)];
button.titleXLabel.text = @"Nyuff";
button.descLabel.text = @"Kukk";
[self.view addSubview:button];
Il mio problema è che non so come fare da Interface Bulder, come usare questa sottoclasse UIButton invece di quella normale.
Già modificato Tipo pulsante su Personalizzato e Classe personalizzata su BlaButtonVC, ma non è sufficiente. Chiamerà BlaButtonVC initWithFrame, ma il pulsante non verrà visualizzato né in Interface Builder, né in Simulator.
Cosa mi è mancato?
Qui trovi il campione completo:
https://www.dropbox.com/s/ioucpb6jn6nr0hs/blabla1.zip
Sì, chiama '-initWithCoder:', ma non è necessario sovrascriverlo. Invece dovresti sovrascrivere '-awakeFromNib', perché in quel momento tutto è impostato. (Non pensate nemmeno di chiamare questi due da soli.) – Tricertops
Non c'è niente di sbagliato nell'override di entrambi i comandi 'initWithCoder:' e 'awakeFromNib'. Dipende da come vuole che sia impostato. – Martol1ni
Nella maggior parte dei casi (se non tutti) '-awakeFromNib' è preferibile eseguire l'override. Vedi i documenti per ['- [NSObject (UINibLoadingAdditions) awakeFromNib]'] (https://developer.apple.com/library/ios/#documentation/UIKit/Reference/NSObject_UIKitAdditions/Introduction/Introduction.html). – Tricertops