需要使用不带UITableViewController的UISearchController,就像UISearchDisplayController一样

时间:2017-10-05 05:35:33

标签: ios swift uitableview uisearchbar uisearchcontroller

所以场景是我在mapView上实现了一个搜索栏。所以我的类不是UITableViewController。以前它使用的是searchDisplayController,但由于这是折旧的,我想避免使用它。搜索显示控制器使用UITableViewDataSource来操作表行等。

我搜索时仍可以让行显示在顶部吗?我可以找到的UISearchController教程正在使用UITableView。我希望表行只显示我的搜索结果,当我选择一行时搜索栏也会消失。

有人能引导我朝正确的方向前进吗?

编辑:我目前正在使用由故事板制作的搜索栏

2 个答案:

答案 0 :(得分:0)

如果你需要像列表这样的设计,最好的选择是桌面视图。您可以在搜索栏下方添加一个tableview,最初隐藏它,然后在用户选择searchBar进行搜索后显示它。 我附上了storyBoard的截图,这里是处理tableview的隐藏和取消隐藏的代码enter image description here

以下是代码:

func searchBarTextDidBeginEditing(_ searchBar: UISearchBar) {
    tableViewForSearch.isHidden = false

}
func searchBarCancelButtonClicked(_ searchBar: UISearchBar) {
    tableViewForSearch.isHidden = true
}

这些是searchBar委托,它们非常具有描述性。不要忘记将searchBar委托设置为self。 希望这有帮助

答案 1 :(得分:0)

通过使用UISearchBar委托,您可以完成任务。

步骤1:将UISearchBar从show object library添加到您的视图中。

/ Users / rajesh / Desktop / Screen Shot 2017-10-05 at 11.17.14 AM.png

步骤2:将UISearchBar插座添加到viewcontroller类。

set ANT_HOME=C:\ant197 set ANT_ARGS=-lib C:\antxtralibs set JAVA_HOME=C:\jdk180_121 set PATH=%JAVA_HOME%\bin;%ANT_HOME%\bin;%PATH% :: default ant -f %1 :: debug :: ant -debug -f %1

步骤3:将UISearchBar委托符合您的viewcontroller类。

@IBOutlet weak var searchbar: UISearchBar!

步骤4:使用所有UISearchbar委托方法完成您的方案。

`searchbar.delegate = self` //返回NO不成为第一响应者

@available(iOS 2.0, *)
    optional public func searchBarShouldBeginEditing(_ searchBar: UISearchBar) -> Bool