我有一个UIViewController,它将另一个UIViewController呈现为UISearchResultsController。
我希望这个searchResultsController在搜索时显示GooglePlaces。
我正在控制台中打印出所有自动完成预测,但是,UITableView并未加载数据。
这是我的职责;
func updateSearchResults(for searchController: UISearchController) {
searchController.searchResultsUpdater = self
if searchController.isActive {
searchController.searchResultsController?.view.isHidden = false
}
if searchController.searchBar.text == "" {
self.searchResults.removeAll()
} else {
guard let query = searchController.searchBar.text else { return }
GMSPlacesClient.shared().autocompleteQuery(query, bounds: nil, filter: filteredResults) { (predictions, error) in
if error != nil {
print(error as Any)
return
} else {
guard let searchPredictions = predictions else { return }
self.searchResults = searchPredictions
print("PREDICTION: \(searchPredictions)")
DispatchQueue.main.async {
self.resultsTableView.reloadData()
}
}
}
}
}
1和2设置为self。
3正在打印;
GMSAutocompletePrediction 0x6000037f0450: "England Street, Charlotte, NC, USA", id: EiJFbmdsYW5kIFN0cmVldCwgQ2hhcmxvdHRlLCBOQywgVVNB, types: (
route,
geocode
4给了我正确的预测量
我在这里遵循Google的自定义实现;
https://developers.google.com/places/ios-sdk/autocomplete#get_place_predictions_programmatically
在“以编程方式获取位置预测”下
一如既往地感谢您的帮助。
extension SearchResultsController: UITableViewDelegate, UITableViewDataSource {
func numberOfSections(in tableView: UITableView) -> Int {
return 1
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return searchResults.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let resultsCell = resultsTableView.dequeueReusableCell(withIdentifier: resultsCellIdentifier, for: indexPath) as! ResultsCell
let resultsAttributedFullText = searchResults[indexPath.row].attributedFullText.string
resultsCell.textLabel?.text = resultsAttributedFullText
return resultsCell
}
进一步检查我的cellForRowAt函数;
let results = searchResults[indexPath.row].placeID
在控制台上打印results
不会给我任何输出。
在self.searchResults = searchPredictions
处添加断点结果
在控制台中出现以下错误;
[BoringSSL] nw_protocol_boringssl_get_output_frames(1300) [C3.1:2][0x7ffd627057e0] get output frames failed, state 8196
不确定是否可以将其连接到我的问题上,但还是要注意。
答案 0 :(得分:0)
您可以替换以下内容吗?
DispatchQueue.main.async {
self.resultsTableView.reloadData()
}
到
DispatchQueue.main.async {
searchController.searchResultsController.resultsTableView.reloadData()
}