2016-07-16 1 views
0

Dans mon application, j'ai deux textFields, en cliquant sur chaque textField je peux en mesure de sélectionner des lieux de chargement de google place autocomplete.In gestionnaire d'utilisateur, je dois attribuer dans quel champ de texte je dois montrer le résultat.Si je clique sur le premier champ de texte, valeur affichant le second champ de texte et vice versa.J'ai défini des valeurs de variable pour les deux champs de texte. Voici mon code complet. Merci d'avance.Comment utiliser l'autocomplétion avec deux champs de texte ios?

//when first textfield clicked 
- (IBAction)onLaunchClicked:(id)sender { 
     GMSAutocompleteViewController *acController = [[GMSAutocompleteViewController alloc] init]; 
     acController.delegate = self; 
     [self presentViewController:acController animated:YES completion:nil]; 

    } 

//when second textfield clicked 
- (IBAction)to_click:(id)sender { 
     GMSAutocompleteViewController *acController = [[GMSAutocompleteViewController alloc] init]; 
     acController.delegate = self; 
     [self presentViewController:acController animated:YES completion:nil]; 
    } 


// Handle the user's selection. 
    - (void)viewController:(GMSAutocompleteViewController *)viewController 
    didAutocompleteWithPlace:(GMSPlace *)place { 
     [self dismissViewControllerAnimated:YES completion:nil]; 
     // Do something with the selected place. 
     NSLog(@"Place name %@", place.name); 
     NSLog(@"Place address %@", place.formattedAddress); 
     NSLog(@"Place attributions %@", place.attributions.string); 

//have to set values in correct textfields 
    if (textfield.tag == 10001){ 
    from_txt.text=place.formattedAddress; 
    } 
    else { 
    to_txt.text= place.formattedAddress; 
     } 

} 

Répondre

0

Vous devez déclarer un exemple de plus textField dans votre viewController comme celui-ci

UITextField *selTextField; 

maintenant définir la référence de textField cliqué pour selTextField dans votre deux IBAction comme celui-ci

- (IBAction)onLaunchClicked:(id)sender { 
    self.selTextField = (UITextField*) sender; 
    GMSAutocompleteViewController *acController = [[GMSAutocompleteViewController alloc] init]; 
    acController.delegate = self; 
    [self presentViewController:acController animated:YES completion:nil]; 
} 

- (IBAction)to_click:(id)sender { 
    self.selTextField = (UITextField*) sender; 
    GMSAutocompleteViewController *acController = [[GMSAutocompleteViewController alloc] init]; 
    acController.delegate = self; 
    [self presentViewController:acController animated:YES completion:nil]; 
} 

maintenant en mode délégué de GMSAutocompleteViewController

- (void)viewController:(GMSAutocompleteViewController *)viewController 
didAutocompleteWithPlace:(GMSPlace *)place { 
    [self dismissViewControllerAnimated:YES completion:nil]; 
    // Do something with the selected place. 
    NSLog(@"Place name %@", place.name); 
    NSLog(@"Place address %@", place.formattedAddress); 
    NSLog(@"Place attributions %@", place.attributions.string); 

    //Set textField value 
    self.selTextField.text=place.formattedAddress; 
} 
+1

Non, ne déclarez pas un global. Déclarez une variable d'instance. Il ya une énorme différence. – rmaddy

+0

@rmaddy Réponse éditée pour la variable d'instance. –

+0

Son travail pour moi.Merci @Nirav – Vignesh