web-dev-qa-db-fra.com

Changer le texte UIButton

J'essaie donc de mettre à jour le texte sur un UIButton lorsque je clique dessus. J'utilise la ligne suivante pour changer le texte:

calibrationButton.titleLabel.text = @"Calibration";

J'ai vérifié que le texte était en train de changer, mais lorsque je lance l'application et que je clique sur le bouton, il passe en "Calibrage" pendant une fraction de seconde, puis revient immédiatement à sa valeur par défaut. Des idées pourquoi cela pourrait se produire? Existe-t-il une sorte de fonction d'actualisation à appeler?

97
Julian Coltea

Lors de la présentation de ses sous-vues, un UIButton définira la valeur de son titleLabel en utilisant ses propres valeurs de titre, de sorte que vous puissiez définir jusqu'à quatre chaînes différentes pour les quatre états (normal, mis en surbrillance, sélectionné, désactivé).

En raison de cette fonctionnalité, la définition du texte de titleLabel directement ne persistera pas et sera réinitialisée par le bouton lorsqu'il affichera ses sous-vues.

C'est ce que vous devez faire pour modifier le texte du titre pour l'état d'un bouton.

[calibrationButton setTitle:@"Calibration" forState:UIControlStateNormal];
241
Jesse Gumpo

Pour définir le texte du bouton, utilisez la méthode suivante:

[calibrationButton setTitle: @"Calibration" forState: UIControlStateNormal];

Voir UIButton référence de classe pour plus de détails ... http://developer.Apple.com/library/ios/#documentation/uikit/reference/UIButton_Class/UIButton/UIButton.html

Ou dans Swift 3:

calibrationButton.setTitle("Calibration", for: .normal)
31
Ashley Mills

par programmation, vous pouvez définir le titre du bouton comme ci-dessous:

[myButton setTitle:@"buttonTitle" forState:UIControlStateNormal];

vous pouvez également définir la propriété titre du bouton à partir du storyboard.

5
bhautikmewada191

Pour Swift 2.0:

let btnObject : UIButton  = UIButton() 
btnObject.frame = CGRect(x: 8, y: 89, width: 70, height: 22)
btnObject.setTitle("Button Title", forState: UIControlState.Normal)
btnObject.titleLabel?.font = UIFont(name: "Helvetica Neue", size: 13)
btnObject.titleLabel?.textColor = UIColor.whiteColor()
btnObject.backgroundColor = UIColor(red: 189/255, green: 176/255, blue: 0/255, alpha: 1)
btnObject.titleLabel?.textAlignment = NSTextAlignment.Center
btnObject.addTarget(self, action: "btnbtnObjectClick:", forControlEvents: UIControlEvents.TouchUpInside)
subView.addSubview(btnObject)
1
Suraj Sonawane

Ce n'est pas une grosse affaire et peut-être une évidence, mais il existe plusieurs états disponibles pour les boutons. Si vous fournissez le "mauvais", vous ne verrez pas le texte changer comme vous le souhaitez.

J'ai remarqué que mon bouton ne montrait pas le texte que j'ai ajouté, en utilisant les méthodes présentées ici. Vérifiez ce lien pour vous assurer que vous fournissez l'état UIControlState que vous souhaitez.

Quelle est la différence entre UIControlStateHighlighted et UIControlStateSelected?

1
user3429534

Pour Swift 3.0

let button = UIButton(type: .system)
button.frame = CGRect(x: 100, y: 100, width: 100, height: 100)
button.setTitle("set here", for: .normal)
button.addTarget(self, action: #selector(TableViewController.actionButtonTocuh), for: .touchUpInside)
button.titleLabel?.textColor  = #colorLiteral(red: 0.1019607857, green: 0.2784313858, blue: 0.400000006, alpha: 1)
view.addSubview(button)
0
Stephen Chen