Google Place IOS SDKで使用されているパターンがきれいでよく設計されていることがわかりました。基本的には、次のリンゴのプレゼンテーションに表示されている内容に従います。Advanced User interface with Collection view(スライド46を開始)。Dynamic TableViewDataSourceを使用してテーブルビューを更新する方法はありますか?
これは、GMSAutocompleteTableDataSourceで実装されているものです。 テーブルビューの状態を定義するのはデータソースまでです。 テーブルビューをリンクします。そして、何かがイベントを変更するたびにデータソースにバインドされ
var googlePlacesDataSource = GMSAutocompleteTableDataSource()
tableView.dataSource = googlePlacesDataSource
tableView.delegate = googlePlacesDataSource
:
googlePlacesDataSource.sourceTextHasChanged("Newsearch")
データソースがクエリを実行するには、結果を表示し、その後ロードとしてテーブルビューを設定します。
私は私のカスタムソースからこれを達成したいと思います:
class JourneyTableViewDataSource:NSObject, UITableViewDataSource, UITableViewDelegate{
private var journeys:[JourneyHead]?{
didSet{
-> I want to trigger tableView.reloadData() when this list is populated...
-> How do I do that? I do not have a reference to tableView?
}
}
override init(){
super.init()
}
func numberOfSections(in tableView: UITableView) -> Int {
return 1
}
...
}
任意のアイデア?
お返事ありがとうございます。これは私の計画ですB. :(GMSAutocompleteTableDataSourceはそれをしません。それは更新するか、またはテーブルビューのリフレッシュをトリガーする状態で何かを行う方法を管理します... Googleのデータソースはマシンの状態を実装し、テーブルビューを更新しますアップロード/結果の取得/結果なし...どのようにそれらを行うのですか? –
GMSAutocompleteTableDataSourceDelegateをチェックしましたか? didUpdateAutocompletePredictionsForTableDataSourceメソッドがあります。通常、人々は通常、自分のテーブルビューのリロードコードを入れています(グーグルで見た限り) –
はい、私はやったし、私はそれを使用するようにGoogleのドキュメントに記載されています。メソッドdidUpdateAutocompletePredictionsForTableDataSource他のアクションを実行するために使用することができますが、私のテーブルビューを更新するために使用する必要はありません。ソース "sourceTextHasChanged"はメインスレッドから呼び出さなければなりません(正確な理由によりそれはテーブルビューを更新:)) –