如何隐藏滚动条上的搜索栏? (没有UITableViewController)

时间:2019-06-25 05:10:57

标签: ios swift uitableview uinavigationbar uisearchbar

我有一个包含UITableView的简单UIViewController,我想在滚动UITableView时将搜索栏隐藏在导航栏中。我发现了

navigationItem.hidesSearchBarWhenScrolling = true

但不起作用。有什么办法可以使其在UIViewController上工作?

3 个答案:

答案 0 :(得分:0)

我的猜测是,当您首次输入UIViewController时,默认情况下UISearchBar是隐藏的,考虑到您正在使用UISearchController并使用搜索图标或类似图标访问它。

在这种情况下,默认情况下,iOS不会隐藏UISearchBar,而是根据您在UITableView中的滚动方向(隐藏/显示)来解决这个问题。

由于无法采取任何措施来取消此行为,但是当用户取消磁带时,我们可以做一些更好的工作,我们将UISearchController设置为nil以便将其从{{1 }},当用户点击搜索图标时,我们会再次为其提供一个值并显示。

  

注意:考虑到问题中没有太多上下文或代码,假设您以这种方式实现此答案。

让我们进入代码。

UIViewController

现在,我们遵循 func prepareSearchController() { //function to setup the SearchBar // Setup the Search Controller searchController.searchResultsUpdater = self searchController.searchBar.delegate = self searchController.obscuresBackgroundDuringPresentation = false searchController.searchBar.placeholder = "Search Items" navigationItem.searchController = searchController definesPresentationContext = true } @objc func openSearch() { // when user tap on the search icon prepareSearchController() self.navigationItem.searchController?.isActive = true } 来访问“取消”按钮操作。

UISearchBarDelegate

答案 1 :(得分:0)

请尝试这种方法

override func viewWillAppear(_ animated: Bool) {
        if #available(iOS 11.0, *) {
              navigationItem.hidesSearchBarWhenScrolling = false
       }
}

override func viewDidAppear(_ animated: Bool) {
        if #available(iOS 11.0, *) {
              navigationItem.hidesSearchBarWhenScrolling = true
      }
}

答案 2 :(得分:0)

  

SWIFT 4简单实现

UISearchBarDelegate代表添加到您的班级

然后在您的班级中添加此功能

func showSearchBar() {
    let searchController = UISearchController(searchResultsController: nil)
    searchController.searchBar.delegate = self
    searchController.dimsBackgroundDuringPresentation = false
    searchController.hidesNavigationBarDuringPresentation = true
    navigationItem.hidesSearchBarWhenScrolling = true 
    //true for hiding, false for keep showing while scrolling
    searchController.searchBar.sizeToFit()
    searchController.searchBar.returnKeyType = UIReturnKeyType.search
    searchController.searchBar.placeholder = "Search here"
    navigationItem.searchController = searchController
}

然后在您的viewDidLoad()

中调用该函数