2010-03-07 19 views
34

Ich habe ein Raster von Schaltflächen erstellt. Der folgende Code erstellt die Schaltflächen und zeigt sie an, aber auf der Schaltfläche befindet sich kein Text. Gibt es eine Einstellung, die ich vermisse? (Obj-C Antworten sind in Ordnung, ich bin zweisprachig)iPhone/iPad UIButton TitleLabel Text nicht angezeigt

RectangleF frame = new RectangleF (X + 3, Y + 3, cellWidth - 2, cellHeight - 2); 
UIButton button = new UIButton (frame); 
button.TitleLabel.Text = "Baha'i"; 
button.TitleLabel.Font = UIFont.FromName ("Helvetica-Bold", 15); 
button.TitleLabel.TextColor = UIColor.Black; 
button.TitleLabel.Frame = frame; 
button.BackgroundColor = UIColor.FromWhiteAlpha(.5f,.5f); 
this.AddSubview (button); 
+0

Warum wurden Sie mit Großbuchstaben für Titlelabel? Es ist button.titleLabel, nicht Button. ** T ** itleLabel. –

+0

Ich habe eine Erklärung hier http://stackoverflow.com/a/11417134/1149906 –

Antwort

128

Ich glaube, Sie wollen setTitle: forState:

[button setTitle:@"Baha'i" forState:UIControlStateNormal] 
+1

Was interessant ist, dass button.titleLable.text = @ "Foo" nicht immer das Richtige tun. Sie müssen den Titel für das UIButton selbst festlegen. –

+2

das ist lächerlich button.titleLabel.text funktioniert nicht aber [button setTile: .. forState:] funktioniert, dass es standardmäßig für den normalen Zustand oder etwas eingestellt ist. Bemerkungen? – Gmu

+2

@Gmu Sie haben es sehr schwer zu implementieren bei Apple gefunden – LolaRun

6

A UIButton von UIView erbt, so ein anderer Weg, um Text und Bilder zu addieren, ist Subview hinzufügen. Beispiel:

// My Image 
UIImage *buttonImage = [UIImage imageNamed:@"myImage.png"]; 
UIImageView *buttonImageView = [[[UIImageView alloc] 
    initWithFrame:CGRectMake(0, 0, 
    buttonImage.size.width,buttonImage.size.height)] autorelease]; 
[buttonImageView setImage:buttonImage]; 

// My Label 
UILabel* titleLabel = [[[UILabel alloc] 
    initWithFrame:CGRectMake(0, 0, 
    buttonImage.size.width, buttonImage.size.height)] autorelease]; 
titleLabel.text = @"My Text"; 
titleLabel.font = [UIFont fontWithName:@"Helvetica-Bold" size: 11.0]; 
titleLabel.textColor = [UIColor blackColor]; 
titleLabel.backgroundColor = [UIColor clearColor]; 
titleLabel.textAlignment = UITextAlignmentCenter; 

// Create Button with Image and Label 
UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom]; 
[button addSubview:buttonImageView]; 
[button addSubview:titleLabel]; 
+0

Ein 'UIButton' hat bereits ein Etikett. Es ist in der Regel nicht notwendig, eigene hinzuzufügen, während Sie zeigen. @tobias-cohen hat für diese Frage und die meisten Fälle die richtige Antwort. – Fabian

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

[selectCountryBtn setTitle:@"My Title" forState:UIControlStateNormal]; 

Hier habe ich Probe programmatisch Schaltfläche erstellen, und legen Sie den Titel für seinen Zustand normal Control können Sie Ihren eigenen Knopf-Objekt verwenden den Titel-String für eingestellt, zusätzlich können Sie auch festlegen Titeltext für einen anderen Steuerstatus, indem Sie UIControlStateNormal in einen anderen erforderlichen Status ändern.

0

Für rasche Developers-

button.setTitle("Your button Name", forState: .Normal) 
Verwandte Themen