Два текстовых поля отображают одно и то же GMSPlace Автозаполнение - PullRequest
0 голосов
/ 30 мая 2019

Я мой GMSAUtocompleteController У меня есть два текстовых поля, но при нажатии они отображают одно и то же местоположение

extension RideAddDetailsViewController: GMSAutocompleteViewControllerDelegate {
    func viewController(_ viewController: GMSAutocompleteViewController, didAutocompleteWith place: GMSPlace) {


    locationTextField.text = place.name
    destinationTextField.text = place.name


    dismiss(animated: true, completion: nil)
  }
   func viewController(_ viewController: GMSAutocompleteViewController, didFailAutocompleteWithError error: Error) {
    // Handle the error
    print("Error: ", error.localizedDescription)
 }
 func wasCancelled(_ viewController: GMSAutocompleteViewController) {
    // Dismiss when the user canceled the action
    dismiss(animated: true, completion: nil)
}

Ответы [ 2 ]

0 голосов
/ 10 июня 2019

Я установил ссылку выбранного textField на selectedTextField в обоих моих IBActions.

 var selectedTextField = UITextField()

 @IBAction func locationTextFieldTapped(_ sender: Any) {
    selectedTextField = locationTextField
    //locationTextField.resignFirstResponder()
    let autoCompleteController = GMSAutocompleteViewController()
    locationTextField.tag = 0
    autoCompleteController.delegate = self
    present(autoCompleteController, animated: true, completion: nil)
}

@IBAction func destinationTextField(_ sender: Any) {
    selectedTextField = destinationTextField
    //destinationTextField.resignFirstResponder()
    let autoCompleteController = GMSAutocompleteViewController()
    destinationTextField.tag = 1
    autoCompleteController.delegate = self
    present(autoCompleteController, animated: true, completion: nil)

    }

Then in the GMSAutocompleteViewControllerDelegate

I did this:
     self.selectedTextField.text = place.name
0 голосов
/ 30 мая 2019

Вы можете использовать тег для их разделения.

    if textField.isEqual(locationTextField)
    {

       let autocompleteController = GMSAutocompleteViewController()
       autocompleteController.view.tag = 1 // assign the tag you want
       autocompleteController.delegate = self

       present(autocompleteController, animated: true, completion: nil)
    }
    else if  textField.isEqual(destinationTextField)
   {

       let autocompleteController = GMSAutocompleteViewController()
       autocompleteController.view.tag = 2 // assign the tag you want
       autocompleteController.delegate = self

       present(autocompleteController, animated: true, completion: nil)
    }

Теперь вы можете отделить значение от метода делегата следующим образом и назначить текстовое поле.

    func viewController(_ viewController: GMSAutocompleteViewController, didAutocompleteWith place: GMSPlace) {

    if viewController.view.tag == 1
    {
       locationTextField.text = place.name
     }
     else viewController.view.tag == 2
     {
        destinationTextField.text = place.name
     }


        dismiss(animated: true, completion: nil)
  }
...