Partage
  • Partager sur Facebook
  • Partager sur Twitter

Envoi de variable après l'action d'un alertview

    22 février 2013 à 8:57:36

    Bonjour à tous,

    j'ai bientôt terminé mon application, mais j'ai un dernier souci , c'est l'envoie des variables après avoir appuyer sur un bouton de mon alertview.

    Je m'explique, je fait normalement passer les variable entre mes vue grâc notamment à cette méthode : 

    -(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender


    {


    if([segue.destinationViewControllerisKindOfClass:[FonctionnaliteViewControllerclass]])

        {

            FonctionnaliteViewController *fonctionVue = [segue destinationViewController];

           [fonctionVue setLoginVue3:self.getLoginvVu2.text];
           [fonctionVue setPasswordVue3:self.getPasswordVue2.text];        

        }

    Tous fonctionne très bien , les variable sont envoyées, sauf que elles le sont pas , lorsque par exemple dans ma vue NousContacterViewcontroller , après que l'utilisateur et appuyer sur envoyer (pour envoyer son message) un alertView s'affiche disant que tout a bien était envoyé et je reviens à ma vu principal (là ou se présente tous mes boutons pour n'importe quel actions) .

    c'est à partir de là que mes variable sont pas envoyé et donc mon login et password valent rien.

    voici mon .h de la vue NousContacterViewcontroler

    #import <UIKit/UIKit.h>

    @interface NousContacterViewController : UIViewController<UITextFieldDelegate,UIAlertViewDelegate,UINavigationControllerDelegate,NSXMLParserDelegate,UITextViewDelegate>

    {

        IBOutlet UILabel *labelClient;

        IBOutlet UITextField *ObjectMessageClient;

         NSMutableData *webData;

        IBOutlet UITextView *MessageClient;

    }

    @property (strong, nonatomic) IBOutletNSString *loginVueContacter;

    @property(strong, nonatomic) IBOutletNSString *passwordVuContacter;

    - (IBAction)EnvoyerMessage;


    @end

    et mon .m

    #import "NousContacterViewController.h"

    #import "GestionViewController.h"

    @interfaceNousContacterViewController ()

     

    @end


    @implementation NousContacterViewController

    @synthesize loginVueContacter;

    @synthesize passwordVuContacter;

     

    - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil


    {


        self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];


        if (self) {

    // Custom initialization

        }

    returnself;

    }


    - (void)viewDidLoad

    {


        [superviewDidLoad];

        [ObjectMessageClientsetDelegate:self];

        [MessageClientsetKeyboardType:UIKeyboardTypeDefault];


    labelClient.text = loginVueContacter;


    }

     

    - (void)didReceiveMemoryWarning


    {

        [superdidReceiveMemoryWarning];

    // Dispose of any resources that can be recreated.


    }


    -(BOOL)textFieldShouldReturn:(UITextField *)ThetextField {


        [ObjectMessageClientresignFirstResponder];  

    returnYES;


    //Fonction pour rétracté le clavier lorsque l'utilisateur appuie sur Done.


    }


    -(BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text


    {


        if([text isEqualToString:@"\n"]){


            [textView resignFirstResponder];

    returnfalse;

        }

    returntrue;

    }


    - (IBAction)EnvoyerMessage {

    if((![ObjectMessageClient.textisEqual: @""]) || (![MessageClient.textisEqual: @""]) )


        {

    NSMutableURLRequest *maRequete = [NSMutableURLRequestrequestWithURL:[NSURLURLWithString:@"http://www.xxxxx.fr/...xxx/xxxxxxx.php"]];


    // On utilise une requète http POST


        [maRequete setHTTPMethod:@"POST"];


    // On passe les variables


        [maRequete setHTTPBody:[[NSStringstringWithFormat:@"objet=%@&message=%@&email=%@",ObjectMessageClient.text,MessageClient.text,labelClient.text]dataUsingEncoding:NSASCIIStringEncoding]];


        NSURLConnection * theConnection = [[NSURLConnection alloc] initWithRequest:maRequete delegate:self];


            if( theConnection )

                      {

                            NSLog(@"Connexion réussie");

                      } 

                     else

                      {

    NSLog(@"theConnection is NULL");

                       }

        }else{


    UIAlertView *alert = [[UIAlertViewalloc] initWithTitle:@"Erreur !"message:@"Tous les champs sont obligatoire."delegate:nilcancelButtonTitle:nilotherButtonTitles:@"Retour", nil];


            [alert show];

        }


    }



    -(void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response


    {


    [webDatasetLength: 0];


    }


    -(void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data


    {


    [webData appendData:data];


    }


    -(void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error


    {


    NSLog(@"ERROR with theConkenction");


    UIAlertView *alert = [[UIAlertViewalloc] initWithTitle:@"Erreur Connexion"message:@"Erreur dans la connexion - Veuillez réessayer plus tard"delegate:selfcancelButtonTitle:@"Ok"otherButtonTitles:nil];


        [alert show];

    }


    -(void)connectionDidFinishLoading:(NSURLConnection *)connection


    {


            if(connection)


            {


    UIAlertView *alert = [[UIAlertViewalloc] initWithTitle:@"Message envoyé"message:@"Votre message a bien été envoyé.\n Nous ferons tout pour vous répondre le plus rapidement possible."delegate:selfcancelButtonTitle:@"Ok"otherButtonTitles:nil];


                [alert show];


            }



    }


    - (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex{


        if (buttonIndex == 0){


    GestionViewController *gestion = [[GestionViewControlleralloc] init];

            gestion = [self.storyboardinstantiateViewControllerWithIdentifier:@"GestionViewController"];
            [selfpresentViewController:gestion animated:YEScompletion:nil];

            [gestion setLoginVue2:self.loginVueContacter];//variable login

            [gestion setPasswordVue2:self.passwordVuContacter];//variable password
            //c'est ici que j'aimerais que lorsque il appuie sur "OK" les variable loginVueContacter et passwordVuContacter soient envoyées à la vu GestionViewController et queles variable de cette page à soit donc remplacer par celle ci-dessus.
        }

    }


    -(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{

     

    if([segue.destinationViewControllerisKindOfClass:[GestionViewControllerclass]]){


            GestionViewController *gestion = [segue destinationViewController];     

            [gestion setLoginVue2:self.loginVueContacter];

            [gestion setPasswordVue2:self.passwordVuContacter];
            //ici sa fonctionne que lorsque j'appuie sur le bouton retour qui est un simple segue vers la page de gestion si le client ne veut pas envoyer un email.

        }

    }

    @end

    j'èspere que vous avez bien compris mon problème.

    Pour récapituler : 

    au lieu d'envoyer des variable entre les vue par la méthode

    -(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{}

    j'aimerais qu'elle soit aussi envoyer lorsque l'utilisateur appuie sur le bouton "OK" de mon AlertView.

    Merci à vous et j'espère bien que vous pourrait m'aider

    • Partager sur Facebook
    • Partager sur Twitter
      22 février 2013 à 12:14:09

      Salut,

      1. en parcourant ton code il y a pas un soucis au niveau de la alertview? En fait tu affiches 3 types de alertview (champs invalide, machin connexion, ok), et quand c'est ok/erreur connexion, tu les différencies pas donc pour lui tu rentres dans le blabla avec la GestionViewController. Mets juste un tag à tes alertview pour les différencier.

      2. Mets des NSLog sur self.loginVueContacter et self.passwordVuContacter quand :

      - après la saisie

      - avant/après l'affichage de l'alertview

      - quand tu cliques sur le "ok"

      - quand t'arrives dans le viewDidLoad de GestionViewController

      Tu verras bien à quel moment ça déconne comme ça

      • Partager sur Facebook
      • Partager sur Twitter
      Si mon aide vous a été utile, merci de mettre le sujet en résolu et mettre mon post en avant. Cheers!

      Envoi de variable après l'action d'un alertview

      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
      • Editeur
      • Markdown