Mam UIButton podklasy, który ładuje stalówka:Jak używać niestandardowego Uibutton z narzędziem do tworzenia interfejsów?
@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
I mogę dodać ten przycisk do widzenia, tak:
// ViewController.m
BlaButtonVC *button = [[BlaButtonVC alloc] initWithFrame:CGRectMake(10, 10, 280, 44)];
button.titleXLabel.text = @"Nyuff";
button.descLabel.text = @"Kukk";
[self.view addSubview:button];
Moim problemem jest to, że nie wiem, jak to zrobić to z Interface Bulder, jak używać tej podklasy UIButton zamiast normalnej.
Już zmieniono typ przycisku na niestandardową i niestandardową na BlaButtonVC, ale to za mało. Będzie wywoływać initBitFirma BlaButtonVC, ale przycisk nie pojawi się ani w Kreatorze interfejsów, ani w Symulatorze.
Co przeoczyłem?
Tutaj można znaleźć pełną próbkę:
https://www.dropbox.com/s/ioucpb6jn6nr0hs/blabla1.zip
Tak, wywołuje "-initWithCoder:", ale nie należy go zastępować. Zamiast tego należy przesłonić '-awakeFromNib', ponieważ w tym momencie wszystko jest skonfigurowane. (Nawet nie myśl o wywołaniu tych dwóch osobiście.) – Tricertops
Nie ma nic złego w przesłoniu zarówno "initWithCoder:", jak i 'awakeFromNib'. To zależy od tego, w jaki sposób chce je skonfigurować. – Martol1ni
W większości (jeśli nie wszystkich) przypadków '-awakeFromNib' lepiej jest przesłonić. Zobacz dokumentację dla ['- [NSObject (UINibLoadingAdditions) awakeFromNib]'] (https://developer.apple.com/library/ios/#documentation/UIKit/Reference/NSObject_UIKitAdditions/Introduction/Introduction.html). – Tricertops