37 votes

À propos de UIAlertView avec Textfield ...

J'ai ce code pour inviter UIAlertView, avec Textfield:

 UIAlertView *myAlertView = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"New List Item", @"new_list_dialog")
                                                      message:@"this gets covered" delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:@"OK", nil];
UITextField *myTextField = [[UITextField alloc] initWithFrame:CGRectMake(12.0, 45.0, 260.0, 25.0)];
[myTextField setBackgroundColor:[UIColor whiteColor]];
[myAlertView addSubview:myTextField];
[myAlertView show];
[myAlertView release];
 

Mais je voudrais ajouter un obtenir la valeur textfield, après que l'utilisateur clique sur "OK", et après que l'utilisateur clique, je veux appeler une méthode, comment puis-je l'attribuer à myAlertView? Je vous remercie.

201voto

Hamed Rajabi Points 2241

Si vous souhaitez ajouter un TextField à UIAlertView, vous pouvez utiliser cette propriété (alertViewStyle) pour UIAlertView:

 UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Title"
                                                message:@"Message"
                                               delegate:self
                                      cancelButtonTitle:@"Done"
                                      otherButtonTitles:nil];
alert.alertViewStyle = UIAlertViewStylePlainTextInput;
[alert show];
[alert release];
 

et dans son fichier .h, ajoutez UIAlertViewDelegate en tant que protocole et implémentez la méthode alertView: clickedButtonAtIndex dans le fichier .m:

 -(void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex{
    NSLog(@"%@", [alertView textFieldAtIndex:0].text);
}
 

J'espère que cela fonctionne pour vous!

Remarque: "Disponible dans iOS 5.0 et versions ultérieures"

30voto

iCoder Points 7091

Déclarez le champ de texte comme global. Dans la méthode d'alerte, cliquez sur - (void)alertView:(UIAlertView *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex prenez simplement la valeur du champ de texte et effectuez les opérations souhaitées .....

Heres le code révisé

 UITextField *myTextField;
...
{

UIAlertView *myAlertView = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"New List Item", @"new_list_dialog")
                                                      message:@"this gets covered" delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:@"OK", nil];
myTextField = [[UITextField alloc] initWithFrame:CGRectMake(12.0, 45.0, 260.0, 25.0)];
[myTextField setBackgroundColor:[UIColor whiteColor]];
[myAlertView addSubview:myTextField];
[myAlertView show];
[myAlertView release];
}
....
- (void)alertView:(UIAlertView *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex
{
NSLog(@"string entered=%@",myTextField.text);
}
 

Pour iOS 5 et versions ultérieures Vous pouvez utiliser alertViewStyle propriété de UIAlertView .

S'il vous plaît se référer à la réponse de Hamed pour le même

2voto

UIAlertView *alert=[[UIAlertView alloc]initWithTitle:@"Login" message:nil delegate:nil cancelButtonTitle:@"Cancel" otherButtonTitles:@"OK", nil];
alert.alertViewStyle=UIAlertViewStylePlainTextInput;
[alert show];

0voto

Cullen SUN Points 895

Vous avez besoin d'une variable globale pour UITextfield, vous voulez récupérer une valeur dans votre méthode AlertView Delegate.J'ai créé un article dans mon blog sur le sujet "Comment ajouter UITextField à UIAlertView à partir de XIB". Vous pouvez consulter le lien suivant.

http://creiapp.blogspot.com/2011/08/how-to-add-uitextfield-to-uialertview.html

0voto

UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Hey Welcome"

message:@"MSG" 

delegate:self

cancelButtonTitle:@"Ok Ji" 

otherButtonTitles:nil];

UITextField textField = [[UITextField alloc] initWithFrame:CGRectMake(15.0, 70.0, 200.0, 25.0)];

[textField setBackgroundColor:[UIColor whiteColor]];
[alert addSubview:textField];

[alert show];
[alert release];

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