SearchBar隐藏在NavigationBar下

时间:2017-11-01 07:27:31

标签: ios iphone swift xcode

我在一个tableview中添加了一个searchBar。我也有一个导航栏,它应该出现在它下面。它工作正常,直到我点击搜索栏。当我在屏幕尺寸较大的设备(来自iPhone 6)上执行此操作时,搜索栏会隐藏在导航栏下方。它在实际的iPhone 5,5s上按预期工作。这是我初始化searchBar的方式:

    searchController.searchResultsUpdater = self as UISearchResultsUpdating
    searchController.dimsBackgroundDuringPresentation = false
    definesPresentationContext = true
    tableView.tableHeaderView = searchController.searchBar
    searchController.hidesNavigationBarDuringPresentation = false
    searchController.searchBar.tintColor = UIColor.black


    searchController.searchBar.scopeButtonTitles = ["Device", "Person", "OS version"]
    searchController.searchBar.delegate = self as UISearchBarDelegate

Before I tap the searchBar

After I tapped the searchBar

searchBar不应该隐藏,因为我在搜索时需要在navigationBar上进行分段控制。你知道如何解决这个问题吗?

更新 设置扩展边后,searchBar如下所示: The navigationbar color changed

When I tap the searchbar

2 个答案:

答案 0 :(得分:2)

我解决了这个问题。这是iOS 11的问题。根据wwdc建议你应该为navigationItem添加searchBar。

if #available(iOS 11.0, *) {
    self.navigationItem.searchController = self.searchController
    self.navigationItem.hidesSearchBarWhenScrolling = false

} else {
    tableView.tableHeaderView = searchController.searchBar
}

这解决了这个问题,它现在适用于任何iOS类型。 在iOS 11上,searchBar看起来像这样: SearchBar with iOS 11

答案 1 :(得分:0)

选择你的viewController。然后在实用工具窗口中取消勾选 1: - 在顶栏下

Like in this Image