web-dev-qa-db-fra.com

Comment puis-je initier un champ de texte dans un UIAlertView

La UIAlertView mise à jour a maintenant un style qui autorise un champ de saisie de texte dans UIAlertView i.e.

alert.alertViewStyle = UIAlertViewStylePlainTextInput;

Cela fonctionne bien, mais je voulais initier le texte d’entrée avec un texte de type "exemple".

Je vois que des gens dans le passé ont utilisé des api sans papiers comme (ce qui fonctionne très bien)

[alert addTextFieldWithValue:@"sample text" label:@"Text Field"];

mais comme ce n'est toujours pas une API publique officielle d'Apple, je ne peux pas l'utiliser.

Un autre moyen de gérer ça? J'ai essayé d'initialiser dans willPresentAlertView mais le champ de texte semble être en lecture seule.

Merci

29
timeview

La variable UIALertView a une méthode textFieldAtIndex: qui renvoie l'objet UITextField souhaité.

Pour un UIAlertViewStylePlainTextInput, l'index du champ de texte est 0.

Vous pouvez ensuite définir la propriété placeholder (ou text) du champ de texte:

UIAlertView *alert = ....
UITextField *textField = [alert textFieldAtIndex:0];
textField.placeholder = @"your text";

Référence de la classe UIAlertView

57
Mutix

Moyen facile de faire

 UIAlertView *alerView = [[UIAlertView alloc] initWithTitle:@"your title" message:@"your message" delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:@"OK", nil];
    alerView.alertViewStyle = UIAlertViewStylePlainTextInput;
    [[alerView textFieldAtIndex:0] setPlaceholder:@"placeholder text..."];
    [alerView show];
9
Dipu Rajak

Non testé, mais je suppose que cela fonctionnerait:

UIAlertView* alert = [[UIAlertView alloc] initWithTitle:...];
UITextField* textField = [alert textFieldAtIndex:0];
textField.text = @"sample";
[alert show];
8

Pour définir la valeur par défaut dans uiAlertView, cela fonctionnera.

UIAlertView *alert = ....
UITextField *textField = [alert textFieldAtIndex:0];
[textField setText:@"My default text"];
[alert show];
6
Salman Iftikhar
- (IBAction)showMessage:(id)sender {
    UIAlertView *message = [[UIAlertView alloc] initWithTitle:@"Add New Category"
                                                      message:nil
                                                     delegate:self 
                                            cancelButtonTitle:@"Add"
                                            otherButtonTitles:@"Cancel", nil];
    [message setAlertViewStyle:UIAlertViewStylePlainTextInput];
    [message show];
}

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
    NSString *title = [alertView buttonTitleAtIndex:buttonIndex];
    if([title isEqualToString:@"Add"])
    {
        UITextField *username = [alertView textFieldAtIndex:0];
        NSLog(@"Category Name: %@", username.text);
    }
}
0
user948749