2017-03-01 18 views
1

都市向けにGoogleマップのオートコンプリートを実装しようとしています。テキストフィールドに入力すると、ユーザーの入力に基づいて潜在的な都市が自動的に表示されます。今のところ、結果をログに出力したいのですが、これを正しく実行しているかどうかはわかりません。これは、あなたが起因した文字列を印刷しているResult Austin{ GMSAutocompleteMatch = "<GMSAutocompleteMatchFragment: 0x608000235e60>"; }オートコンプリートテーブルビューのGoogleマップを迅速に実装するにはどうすればよいですか?

var placesClient: GMSPlacesClient! 

override func viewDidLoad() { 
    super.viewDidLoad() 

    placesClient = GMSPlacesClient.shared() 

} 



func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool { 
     placeAutoComplete() 
     return true 
    } 

    func placeAutoComplete() { 
     let filter = GMSAutocompleteFilter() 
     filter.type = .city 
     placesClient.autocompleteQuery(cityField.text!, bounds: nil, filter: filter, callback: {(results, error) -> Void in 
      if let error = error { 
       print("Autocomplete error \(error)") 
       return 
      } 
      if let results = results { 
       for result in results { 
        print("Result \(result.attributedPrimaryText)") 
       } 
      } 
     }) 

    } 

答えて

2

私のログに表示された結果のようなものです。これはUILableattributedTextプロパティに表示すると表示されません。 result in resultsの結果を配列に保存し、tableView.reloadDataを呼び出してテーブルビューをリロードすると、

が表示されます。テーブルビューのデータソースでは、配列の項目数に行数を設定します。その後cellForRowAtIndexPath内で本当に私は私のテーブルビュー内でそれを投稿することができますので、私は、アレイ内の潜在的な結果を必要とする代わりに、文字列を置換しようとしていない、次の

let result = resultArray[indexPath.row] as? GMSAutocompletePrediction 
cell.textLabel.attributedText = result.attributedPrimaryText 
+0

を行います。たとえば、「A」と入力すると、上記のクラスにテキストフィールドが委譲されている限り、A以外の都市はA – joethemow

+0

で始まります。テキストフィールドにテキストを入力するたびに、メソッド 'shouldChangeCharachtersInRange'。その時点で 'placeAutoComplete()'を呼び出します。 'placeAutoComplete()'メソッドの内部では、すべての結果が配列に格納されます。次に、tableViewを 'tableView.reloadData()'でリロードし、 'cellForRowAtIndexPath'の内部で' cell.textLabel.attributedText = resultArray [index.row] .attributedPrimaryText'を設定します。 – LoganHenderson

関連する問題