如何使UISearchController等到单击搜索

时间:2016-01-04 15:43:25

标签: ios swift uisearchcontroller

我正在尝试在SWIFT代码中实现搜索。我希望它等到单击搜索按钮才能执行任何操作。到目前为止我有什么。

func updateSearchResultsForSearchController(searchController: UISearchController)
{
    self.filteredCats.removeAll(keepCapacity: false)
    filteredCats = art.filter{
        $0.sarticleTitle.lowercaseString.rangeOfString(searchController.searchBar.text!.lowercaseString) != nil
    }
        print(searchController.searchBar.text)
        self.tableView.reloadData()
}

一旦用户输入内容,它就会打印出所有信息。我希望它等到单击搜索按钮或用户输入完所有内容后。

3 个答案:

答案 0 :(得分:4)

你应该像这样设置你的视图控制器。

var resultSearchController = UISearchController()
resultSearchController.searchBar.delegate = self

extension ViewController: UISearchBarDelegate {
    func searchBarSearchButtonClicked(_ searchBar: UISearchBar) {
        print("search button click")
    } 
}

答案 1 :(得分:2)

使用UISearchBarDelegate方法searchBarSearchButtonClicked(_:) Reference

class MySearchController:UISearchController, UISearchBarDelegate {

    override init(searchResultsController: UIViewController?) {
        super.init(searchResultsController: searchResultsController)
        // Set the searchbar delegate
        self.searchBar.delegate = self
    }

    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }

    func searchBarSearchButtonClicked(searchBar: UISearchBar) {
        // Start the search
    }

}

重要的是,请务必告诉UISearchBar您希望UISearchController成为其代表,以上是未经测试的示例,您的确切初始化可能会有所不同。

答案 2 :(得分:0)

实施" searchController.searchBar.delegate" &安培; "在searchBarSearchButtonClicked"方法

self.searchController.searchBar.delegate = self; 

func searchBarSearchButtonClicked(searchBar: UISearchBar) {
    //enter your search code
}