首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >谷歌未加载到TableView中的位置

谷歌未加载到TableView中的位置
EN

Stack Overflow用户
提问于 2018-07-24 14:00:28
回答 1查看 534关注 0票数 0

我有一个UIViewController,它将另一个UIViewController表示为UISearchResultsController。

我希望这个searchResultsController在搜索时显示GooglePlaces。

我正在控制台中打印出所有的自动完成预测,但是UITableView没有加载数据。

这是我的功能;

代码语言:javascript
复制
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. TableView代表
  2. TableView DataSource
  3. 预测
  4. numberOfRowsInSection

1和2设置为self。

3是印刷;

代码语言:javascript
复制
GMSAutocompletePrediction 0x6000037f0450: "England Street, Charlotte, NC, USA", id: EiJFbmdsYW5kIFN0cmVldCwgQ2hhcmxvdHRlLCBOQywgVVNB, types: (
    route,
    geocode

4是给我正确的预测量

我是遵循自定义实现从谷歌这里;

programmatically

在“以编程方式获得位置预测”下

任何帮助都会被感激。

更新: TableView方法

代码语言:javascript
复制
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

进一步检查我的cellForRowAt功能;

代码语言:javascript
复制
let results = searchResults[indexPath.row].placeID

results打印到控制台不会给我任何输出。

更新:

self.searchResults = searchPredictions添加断点结果

更新:

在控制台中,我得到了以下错误;

代码语言:javascript
复制
[BoringSSL] nw_protocol_boringssl_get_output_frames(1300) [C3.1:2][0x7ffd627057e0] get output frames failed, state 8196

不确定这是否与我的问题有关,但还是注意到了这一点。

EN

回答 1

Stack Overflow用户

发布于 2018-07-24 14:09:54

请将以下内容替换如下:

代码语言:javascript
复制
DispatchQueue.main.async {
     self.resultsTableView.reloadData()
}

代码语言:javascript
复制
DispatchQueue.main.async {
     searchController.searchResultsController.resultsTableView.reloadData()
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51500589

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档