Warum nicht UIButton Titelanzeige?
-
20-08-2019 - |
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?
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];