所以场景是我在mapView上实现了一个搜索栏。所以我的类不是UITableViewController。以前它使用的是searchDisplayController,但由于这是折旧的,我想避免使用它。搜索显示控制器使用UITableViewDataSource来操作表行等。
我搜索时仍可以让行显示在顶部吗?我可以找到的UISearchController教程正在使用UITableView。我希望表行只显示我的搜索结果,当我选择一行时搜索栏也会消失。
有人能引导我朝正确的方向前进吗?
编辑:我目前正在使用由故事板制作的搜索栏
答案 0 :(得分:0)
如果你需要像列表这样的设计,最好的选择是桌面视图。您可以在搜索栏下方添加一个tableview,最初隐藏它,然后在用户选择searchBar进行搜索后显示它。 我附上了storyBoard的截图,这里是处理tableview的隐藏和取消隐藏的代码
以下是代码:
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