2016-04-16 19 views
0

Ich erstelle eine benutzerdefinierte UIView namens DropDown, die eine Schaltfläche enthält. In der .h-Datei initialisiere ich die Schaltfläche und im Konstruktor der UIView füge ich sie dem Rahmen hinzu und setze den Titel. Hier ist der Konstruktor:UIButton wird nicht zu benutzerdefiniertem UIView-Objekt hinzugefügt C

-(id) initWithFrame:(CGRect)frame title1:(NSString*)text1{ 
    self = [super initWithFrame:frame]; 

    if (self){ 
     _button1 = [UIButton buttonWithType:UIButtonTypeCustom]; 
     [_button1 setTitle:text1 forState:UIControlStateNormal]; 
     _button1.frame = CGRectMake(10, 10, 50, 20); 
     [self addSubview:_button1]; 

    } 
    return self; 
} 

In meinem Viewcontroller viewDidLoad Ich instanziieren ein DropDown-Objekt wie folgt:

_dropDown = [[DropDown alloc] initWithFrame:_dropDown.frame title1:@"Title"]; 

Das _dropDown Objekt ist ein IBOutlet und ich es auf dem View-Controller anschließen. Wenn ich die Anwendung starte, wird keine Schaltfläche angezeigt und ich bin mir nicht sicher warum. Jede Hilfe würde sehr geschätzt werden.

Antwort

1

Diese Aussage

_dropDown = [[DropDown alloc] initWithFrame:_dropDown.frame title1:@"Title"]; 

Referenzen _dropDown.frame die nil ist an dieser Stelle, weil _dropDown noch nicht zugeordnet worden ist. Ich würde den Rahmen ausdrücklich eher wie dies empfehlen die Erstellung:

_dropDown = [[DropDown alloc] initWithFrame:CGRectMake(10, 10, 50, 20) title1:@"Title"]; 

(Sie werden die Dimensionierung für CGRectMake herauszufinden müssen)

Verwandte Themen