Frage

In einem viewDidLoad Methode des UIViewController, ich dies tun:

UIButton *b = [[UIButton buttonWithType:UIButtonTypeRoundedRect] 
                                       initWithFrame:CGRectMake(0, 0, 100, 100)];

[b setTitle:@"Testing" forState:UIControlStateNormal];
[b setTitleColor: [UIColor blackColor] forState: UIControlStateNormal];
[self.view addSubview:b];                       // EDIT: should be 'b'
NSLog(@"button title: %@", [b titleLabel].text);

Die Schaltfläche zeigt aber der Titel nicht. Der NSLog Linie druckt „Testing“ an die Konsole. Irgendwelche Vorschläge, was ich falsch mache?

War es hilfreich?

Lösung

Ich kann Ihnen nicht sagen, warum es nicht funktioniert, aber ich habe eine Lösung haben:

UIButton *b = [UIButton buttonWithType:UIButtonTypeRoundedRect] ;        
b. frame = CGRectMake(0, 0, 100, 100);

[b setTitle:@"Testing" forState:UIControlStateNormal];
[b setTitleColor: [UIColor blackColor] forState: UIControlStateNormal];
[self addSubview:b];   

Seperate den Rahmen aus der Verteilung und init der Taste erzeugt wird.

Andere Tipps

Das Problem liegt bei

UIButton *b = [[UIButton buttonWithType:UIButtonTypeRoundedRect] 
                                       initWithFrame:CGRectMake(0, 0, 100, 100)];

buttonWithType gibt ein Autoreleased initialisiert Objekt. Sie können es nicht wieder senden Sie eine Initwithframe als ein Objekt nur einmal initialisiert werden kann.

Setzen Sie den Rahmen getrennt:

b.frame = CGRectMake(0, 0, 100, 100);

Haben Sie stattdessen:

UIButton *b = [UIButton buttonWithType:UIButtonTypeRoundedRect];
b.frame = CGRectMake(0, 0, 100, 100);
[b setTitle:@"Testing" forState:UIControlStateNormal];
[b setTitleColor: [UIColor blackColor] forState: UIControlStateNormal];
[self.view addSubview:b];  

Die Sache ist, dass Sie für [[UIButton alloc] initWithFrame:] oder [UIButton buttonWithType:] gehen, sollten Sie beide nicht zusammen verwendet werden.

Sie können folgendes tun:

UIButton *b=[[UIButton alloc]initWithFrame:CGRectMake(0, 0, 100, 100)];

b=[UIButton buttonWithType:UIButtonTypeRoundedRect];

[b setTitle:@"Button Title Here" forState:UIControlStateNormal];
[b setTitleColor:[UIColor blackColor] forState: UIControlStateNormal];
[self.view addSubview:b];

Ich hatte das gleiche Problem, und es ist dann aber die Tatsache, dass ich das Bild einstellt anstatt die Background. Alles funktionierte gut, wenn ich getan habe:

[button setBackgroundImage:image forState:UIControlStateNormal];
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top