2012-12-09 10 views
5

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

Odpowiedz

6

Kiedy inicjowana z StoryBoard, wywołuje metodę initWithCoder: zamiast initWithFrame:. Poza tym wszystko jest poprawne.

+2

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

+2

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

+0

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

0

interfejs Builder nie można dodać do UIButton subviews, więc oto kilka pomysłów:

  1. zrobić w kodzie.
  2. Umieść przycisk pod etykietami i obrazkiem, aby otrzymywać odczyty i działać zgodnie z oczekiwaniami.
  3. Użyj komórek z komórką (to wygląda na to, co próbujesz osiągnąć).
  4. Użyj niestandardowego UIView z UITapGestureRecognizer.
+0

@Julian Czy widzisz słowo "nie" _ w mojej odpowiedzi? Jest szósty. W każdym razie, patrząc na to pytanie i odpowiedź po 3 latach, nie mają dla mnie żadnego sensu. – Tricertops

Powiązane problemy