我通过UISearchController在我的测试应用程序中实现了搜索栏。当我启动我的应用程序时,我看到导航控制器下的搜索栏。但是我怎么能在应用程序启动时隐藏它并仅在我拉下桌面视图时显示它?拉起桌面视图时再次隐藏?我在google或youtube上找不到任何解决方案,请帮忙。
修改
这是我在viewDidLoad
//set the searchController
searchController = UISearchController(searchResultsController: nil)
searchController.searchBar.sizeToFit()
searchController.searchResultsUpdater = self
searchController.dimsBackgroundDuringPresentation = false
searchController.searchBar.placeholder = "Search your restaurant"
tableView.tableHeaderView = searchController.searchBar
definesPresentationContext = true
tableView.scrollToRowAtIndexPath(NSIndexPath(forRow: 0, inSection: 0), atScrollPosition: UITableViewScrollPosition.Top, animated: false)
答案 0 :(得分:8)
将以下细分放在您的viewDidLoad
中,因此您要求UITableView
滚动并隐藏开头的SearchBar
:
tableView.scrollToRowAtIndexPath(NSIndexPath(forRow: 0, inSection: 0), atScrollPosition: UITableViewScrollPosition.Top, animated: false)
不要忘记将TableViewHeader
设置为searchController
:
tableView.tableHeaderView = searchController.searchBar
更新:
因为您有一个空的tableview,所以请替换以下内容:
tableView.scrollToRowAtIndexPath(NSIndexPath(forRow: 0, inSection: 0), atScrollPosition: UITableViewScrollPosition.Top, animated: false)
使用:
self.tableView.contentOffset = CGPointMake(0.0, 44.0)
祝你好运!
答案 1 :(得分:1)
斯威夫特3:
在viewController出现之后,您可以将tableview滚动到第0部分,第0行没有动画。
以这种方式,带有搜索栏的tableHeaderView将不可见,因为它位于第0部分上方。
您只需向下滚动常规方式即可显示。
override func viewDidAppear(_ animated: Bool) {
self.tableView.scrollToRow(at: IndexPath(row: 0, section: 0), at: UITableViewScrollPosition.top, animated: false)
}