40 votes

UIButton setText de manière programmatique

J'ai environ 10 UIButtons dans un fichier xib et je veux définir le texte de manière programmatique.

62voto

Ron Srebro Points 4687

Vous voudrez peut-être être plus précis la prochaine fois que vous poserez une question.

Vous pouvez essayer d'attribuer une étiquette différente à chaque bouton dans le constructeur d'interface (ou la même étiquette si c'est ce dont vous avez besoin) et ensuite utiliser le code suivant

for (int i = 1 ; i<=10;i++)
{
     UIButton *myButton = (UIButton *)[myView viewWithTag:i];
     [myButton setTitle:@"my text" forState:UIControlStateNormal];
}

1 votes

C'est exactement ce que je recherche... une question : quelle est l'instance du fichier xib ?

0 votes

Je suppose que votre NIB est pour un UIViewController, donc si ce code est à l'intérieur du code du UIViewController, myView devrait être view.

0 votes

ou plus précisément, myView doit être la vue parent de vos boutons

7voto

Md Imran Choudhury Points 2536

En Swift 3+ :

button.setTitle("Button Title", for: .normal)

Autrement :

button.setTitle("Button Title", forState: UIControlState.Normal)

2voto

Jorge Arimany Points 11

Je pense que vous pourriez créer une collection de boutons à partir de votre mise en page :

Sélectionnez le premier bouton de votre xib et faites-le glisser avec le bouton droit dans votre code : Drag firs button

vous devez alors sélectionner "Outlet Collection" pour le type de connexion et attribuer un nom :

select Outlet collection

Ensuite, dans votre code, vous avez un tableau de boutons provenant de votre fichier xib :

@property (strong, nonatomic) IBOutletCollection(UIButton) NSArray *buttons;

Ensuite, sélectionnez et faites glisser les autres boutons sur la collection créée, faites-le un par un dans l'ordre dans lequel vous voulez les itérer : Drag the other buttons

Vous pouvez vérifier l'ordre des boutons dans l'inspecteur de connexions en passant la souris sur le tableau que vous avez créé : check button order

Maintenant, définissez le texte de chaque bouton :

for (int i = 0; i<self.buttons.count; i++) {
    UIButton * button = self.buttons[i];
    [button setTitle: [NSString stringWithFormat:@"Button %d",i ] forState:UIControlStateNormal];
}

Notez que UIControlStateNormal est l'état par défaut et que s'il n'est pas surchargé, il sera affiché pour tous les états :

En général, si une propriété n'est pas spécifiée pour un état, la valeur par défaut est la valeur UIControlStateNormal. Si la valeur de UIControlStateNormal n'est pas définie, la propriété prend par défaut une valeur système. Par conséquent, vous devriez au moins définir la valeur de l'état normal.

J'espère que cela vous aidera.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X