在UITabBarController

时间:2015-12-09 04:28:29

标签: ios swift uisearchbar uisearchcontroller

我正在尝试在我的UITabBarController中的一个选项卡中实现搜索栏,该选项卡是UINavigationController中的UITableViewController ...我正在关注Apple教程 - 我尝试了很多不同的选项,包括这里提到的答案

Search bar gets cut off when using UISearchController with a UITabBarController inside a UINavigationController

我尝试使用

设置以下属性
self.definesPresentationContext = true

self.tabBarController?.definesPresentationContext = true

这是我的代码(来自UITableViewController,包含UISearchBar):

/// Search controller to help us with filtering.
    var searchController: UISearchController!

/// Secondary search results table view.
    var resultsTableController: SearchResultsTableController!

override func viewDidLoad() {
    super.viewDidLoad()
    resultsTableController = SearchResultsTableController()
    resultsTableController.tableView.delegate = self

    searchController = UISearchController(searchResultsController: resultsTableController)
    searchController.searchResultsUpdater = self
    searchController.searchBar.sizeToFit()
    self.tableView.tableHeaderView = searchController.searchBar

    searchController.delegate = self
    searchController.dimsBackgroundDuringPresentation = true
    searchController.searchBar.delegate = self  // so we can monitor text changes

    self.definesPresentationContext = true
}

以下是搜索栏的图片:

enter image description here

一旦我点击它: enter image description here

2 个答案:

答案 0 :(得分:4)

好的,终于解决了这个问题。这条线让它运作

self.extendedLayoutIncludesOpaqueBars = true 

我的TabBar不是半透明的,所以我认为这不会有所作为,但我在我的UITableviewcontroller(显示UISearchController的控制器)上设置了它,现在正确搜索导航栏中的显示。我还在顶部和底部之间延伸了边缘。底栏设置为true(使用Interface Builder)

答案 1 :(得分:0)

虽然我的搜索栏在iOS 9中使用sizeToFit在searchController的searchBar上工作正常,但是 definesPresentationContext=true  在托管搜索结果视图控制器的视图控制器上,iOS 10中发生了一些变化。

适用于我的新修补程序是在搜索结果视图控制器上禁用“调整滚动视图插入”。我只是在Interface Builder中这样做了。我不得不启用Extend Edges。奇怪的是,这使得Interface Builder在导航栏下显示了被切断的表格单元格,但它并未在运行时被切断。