【问题标题】:Swift - UISearchController with separate searchResultsControllerSwift - 带有单独 searchResultsController 的 UISearchController
【发布时间】:2017-07-12 14:19:55
【问题描述】:

当您想在单独的 searchResultsController 中显示结果时,我正在尝试弄清楚如何使用 UISearchController - 我发现的每一个指南、视频和教程都使用当前的 viewController 来呈现搜索结果,并且像这样实例化 UISearchController:

let searchController = UISearchController(searchResultsController: nil)

但我想使视图变暗并显示一个带有搜索结果的新 tableView,就像在 App Store 搜索中所做的那样。所以我所做的是创建一个新的 tableViewController,给它一个故事板 id,然后像这样实例化它:

let storyboard = UIStoryboard(name: "Main", bundle: nil)
let resultsController = storyboard.instantiateViewController(withIdentifier: "searchResults") as! UITableViewController
let searchController = UISearchController(searchResultsController: resultsController )

这似乎有效。但是,从这里开始,我就陷入了困境。我不知道如何在 resultsController 中显示搜索结果,在 resultsController 中的 cellForRowAtIndexPath 中放置什么等等。

感谢任何帮助!

【问题讨论】:

    标签: ios swift xcode uisearchcontroller


    【解决方案1】:

    设法弄清楚 -

    1) 在实例化 searchController 时添加这一行:

    searchController.searchResultsUpdater = resultsController
    

    2) 像这样将 UISearchResultsUpdating 添加到您的 resultsController 中:

    class resultsController: UITableViewController, UISearchResultsUpdating {
    

    3) 在你的 resultsController 中添加这个函数:

    func updateSearchResults(for searchController: UISearchController) {
    
    }
    

    从那里,您可以获取搜索文本,对其进行处理,然后重新加载 tableView:

    func updateSearchResults(for searchController: UISearchController) {
    
        let searchText = searchController.searchBar.text!
    
        //Do Stuff with the string
    
        DispatchQueue.main.async {
    
            self.tableView.reloadData()
    
        }
    
    }
    

    希望对大家有所帮助!

    【讨论】:

    • 如何将信息从那里解析回最初的 ViewController?例如当一个 UITableViewCell 被选中时?
    • 使用自定义协议或通过 didSelectRow 然后以编程方式将其关闭并将结果解析回初始 VC?
    • 是否可以使用分段控件让 UISearchController 在 2 个搜索结果视图之间切换?
    • 它确实帮助了我,谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-01
    • 2015-08-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多