2010-03-07 6 views
34

J'ai créé une grille de boutons. Le code suivant crée les boutons et les affiche, mais il n'y a pas de texte sur le bouton. Y a-t-il un paramètre qui me manque? (Réponses Obj-C sont très bien, je suis bilingue)iPhone/iPad UIButton TitreLabel texte n'apparaissant pas

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

Pourquoi vous utilisiez des lettres majuscules pour TitleLabel? C'est button.titleLabel, pas le bouton. ** T ** itleLabel. –

+0

J'ai détaillé une explication ici http://stackoverflow.com/a/11417134/1149906 –

Répondre

128

Je pense que vous voulez setTitle: forState:

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

Ce qui est intéressant est que button.titleLable.text = @ "Foo" ne fait pas toujours la bonne chose. Vous devez définir le titre sur le UIButton lui-même. –

+2

c'est ridicule button.titleLabel.text ne fonctionne pas mais [bouton setTile: .. forState:] fonctionne souhaite qu'il soit défini par défaut pour l'état normal ou quelque chose. Commentaires? – Gmu

+2

@Gmu Ils ont trouvé ça très difficile à implémenter chez apple – LolaRun

6

A UIButton hérite de UIView, donc une autre façon d'ajouter du texte et des images, est ajouter une sous-vue Exemple:

// 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

Un 'UIButton' a déjà une étiquette. L'ajout du vôtre, tel que vous le montrez, n'est généralement pas nécessaire. @ tobias-cohen a la bonne réponse pour cette question, et la plupart des cas. – Fabian

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

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

Ici, je créer échantillon bouton programme, puis définissez le titre de son état de contrôle normal, vous pouvez utiliser votre propre objet bouton pour définir la chaîne de titre, vous pouvez en outre également définir Le texte du titre d'un autre état de contrôle modifie UIControlStateNormal en un autre état obligatoire.

0

Pour Developers- rapides

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