我正试图实现与WhatsApp相同的行为。我进入聊天下拉列表,输入我的搜索,一个新的表格视图显示搜索结果。
到目前为止没有问题。看起来是这样的:

 let searchController = UISearchController(searchResultsController: UITableViewController())

 searchController.searchResultsUpdater = self
 definesPresentationContext = true

 if #available(iOS 11.0, *) {
     self.navigationItem.searchController = searchController
 }

现在毛茸茸的部分:当我点击一个结果时,我希望它像在UINavigationController中一样显示出来。就像在WhatsApp一样。当我点击后退时,我想看到我的搜索结果。
我试过各种各样的东西。在UINavigationController中嵌入searchresultcontroller。玩definesPresentationContext等等。也许你们有人能解决这个问题。
出于性能原因,我不希望搜索结果显示在正确的位置。必须有一个在searchresultcontroller中包含所有结果的解决方案。
我非常感谢你的建议和解决方案。

最佳答案

我终于找到了答案!!!
解决方案是:为searchresultcontroller创建一个子类,在实例化控制器时将UINavigationController的引用传递给它。选择要调用的单元格时:

override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    // yourController is the UIViewController to show your stuff
    if let yourController = storyboard?.instantiateViewController(withIdentifier: "yourController"){
        // navController is the reference to the navController of the controller where you performed the search
        navController?.pushViewController(yourController, animated: true)
    }
}

关于swift - 在UISearchController iOS11中导航,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47120751/

10-10 20:39