滚动

时间:2018-02-13 18:09:59

标签: swift xcode uisearchbar

我正在编码设置搜索栏(而非故事板)

以下是与搜索栏相关的代码:

    var searchController = UISearchController(searchResultsController: nil)


func setupNavBar() {
    self.navigationItem.title = "Tools"
    self.navigationController?.navigationBar.prefersLargeTitles = true
     navigationItem.hidesSearchBarWhenScrolling = false
    }


func configureSearchController() {
    filteredData = toolsList.allTools
    searchController.searchResultsUpdater = self
    searchController.hidesNavigationBarDuringPresentation = false
    searchController.dimsBackgroundDuringPresentation = false
    searchController.searchBar.searchBarStyle = .minimal
    searchController.searchBar.tintColor = .purple
    tableView.tableHeaderView = searchController.searchBar
    searchController.searchBar.placeholder = "Search for tools"
}


override func viewDidLoad() {
    super.viewDidLoad()
    setupNavBar()
    tableViewConfigurations()
    configureSearchController()
}



func searchBarTextDidBeginEditing(_ searchBar: UISearchBar) {
    isSearching = true
    tableView.reloadData()
}


func searchBarCancelButtonClicked(_ searchBar: UISearchBar) {
    isSearching = false
    tableView.reloadData()
}

虽然使用这行代码我要求在滚动时禁用隐藏搜索栏,但它仍然隐藏。

navigationItem.hidesSearchBarWhenScrolling = false

我可以请你指导我如何禁用它吗? 非常感谢你

2 个答案:

答案 0 :(得分:1)

看看Apple的文档,我发现了这个:

  

您必须为此属性配置searchController属性   [hidesSearchBarWhenScrolling]有任何效果。导航   控制器隐藏并仅显示搜索提供的搜索栏   该财产中的控制人。

我尝试将searchController添加到navigationItem。

答案 1 :(得分:1)

@very_supercharged谢谢我已将searchBar从表视图转移到navigationBar 我改变了:

    tableView.tableHeaderView = searchController.searchBar

    navigationItem.searchController = searchController

现在,在滚动时,searchBar不会隐藏。