【问题标题】:UISearchController appears behind NavigationBarUISearchController 出现在 NavigationBar 后面
【发布时间】:2020-01-26 11:02:24
【问题描述】:

我试图通过点击 UIBarButtonItem 来显示 UISearchController。但是 SearchBar 出现在 NavigationBar 后面。如果我设置definePresentationContext = false,那么SearchBar 会出现在NavigationBar 上方,但过渡不起作用。

    @IBAction func searchButtonPressed(_ sender: Any) {
        searchResultsController = self.storyboard?.instantiateViewController(withIdentifier: "SearchResultsController") as? SearchResultsController
        searchResultsController.tableView.delegate = self
        let searchController = UISearchController(searchResultsController: searchResultsController)
        searchController.searchResultsUpdater = searchResultsController
        searchController.hidesNavigationBarDuringPresentation = false
        searchController.searchBar.autocapitalizationType = .words
        definesPresentationContext = true
        present(searchController, animated: true)
    }

Before BarButtonItem tapped

After BarButtonItem tapped

View UI Hierarchy

Interface Builder

searchController.hidesNavigationBarDuringPresentation = false解决了这个问题,但是我需要导航栏不被隐藏

更新:

在导航栏中插入 SearchBar 不适合我的应用 https://imgur.com/a/74e5sSk

【问题讨论】:

    标签: ios swift


    【解决方案1】:

    如果您使用的是UITableViewController,那么您可以执行以下操作:

    let searchController = UISearchController(searchResultsController: nil)
    searchController.obscuresBackgroundDuringPresentation = false
    searchController.definesPresentationContext = true
    

    然后,您需要将这个searchController 分配给navigationItem

    self.navigationItem.searchController = searchController
    

    现在searchbar 将在您拉动 tableview 时出现,并且看起来像这样:

    如果您想永久保留搜索栏,请执行以下操作:

    self.navigationItem.hidesSearchBarWhenScrolling = false
    

    【讨论】:

    • 当按钮像 iOS 日历应用一样被点击时,我需要在 viewcontroller 前面显示搜索栏
    • 在我描述的情况下,当您滚动时它也会被隐藏,并且只有在您拉动 tableview 时才会出现。还是您希望它只出现在特定的按钮点击上?
    • 是的,我想在点击按钮时出现
    • 您可以在点击按钮时分配self.navigationItem.searchController = searchController。这样就可以了。
    • 不幸的是,这不适用于我的应用程序imgur.com/a/74e5sSk
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-07-03
    • 2013-04-10
    • 2020-06-15
    • 2017-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多