J'essaye donc de mettre à jour le texte sur un UIButton lorsque je clique dessus. J'utilise la ligne suivante pour modifier le texte:
calibrationButton.titleLabel.text = @"Calibration";
J'ai vérifié que le texte change, mais lorsque j'exécute l'application et que je clique sur le bouton, il passe à "Calibration" pendant une fraction de seconde puis revient à sa valeur par défaut. Des idées pourquoi cela pourrait se produire? Y a-t-il une sorte de fonction de rafraîchissement que je dois appeler?
objective-c
ios
xcode
event-handling
uibutton
Julian Coltea
la source
la source
Réponses:
Lors de la disposition de ses sous-vues, un UIButton définira la valeur de texte 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 directe du texte de titleLabel ne persistera pas et sera réinitialisée par le bouton lorsqu'il disposera ses sous-vues.
C'est ce que vous devez faire pour modifier le texte du titre de l'état d'un bouton.
la source
button.titleLabel
, vous voyez que titleLabel est une propriété en lecture seule, et donc toutes les propriétés d'une propriété en lecture seule sont également en lecture seule. L'utilisation de la notation par points pour les éditer ne fonctionnera pas, et vous avez donc besoin de méthodes explicites pour les éditer. Cela a du sens pour moi au moins.Although this property is read-only, its own properties are read/write. Use these properties primarily to configure the text of the button. For example:
Pour définir le texte du bouton, utilisez la méthode suivante:
Voir
UIButton
la référence de classe pour plus de détails ... http://developer.apple.com/library/ios/#documentation/uikit/reference/UIButton_Class/UIButton/UIButton.htmlOu dans Swift 3:
la source
par programme, vous pouvez définir le titre du bouton comme ci-dessous:
vous pouvez également définir la propriété du titre du bouton à partir du storyboard.
la source
Ce n'est pas très grave, et peut-être évident, mais plusieurs états sont 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 n'affichait pas le texte que j'avais ajouté, en utilisant les méthodes présentées ici. Vérifiez ce lien pour vous assurer que vous fournissez le UIControlState que vous souhaitez.
Quelle est la différence entre UIControlStateHighlighted et UIControlStateSelected?
la source
Pour Swift 3.0
la source
Pour Swift 2.0:
la source
Si vous ne souhaitez pas définir le titre pour tous les états, réglez-le simplement pour l'état normal car le titre des états non définis sera par défaut le titre de l'état normal.
la source