我正在尝试在我的UITabBarController中的一个选项卡中实现搜索栏,该选项卡是UINavigationController中的UITableViewController ...我正在关注Apple教程 - 我尝试了很多不同的选项,包括这里提到的答案
我尝试使用
设置以下属性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
}
以下是搜索栏的图片:
答案 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在导航栏下显示了被切断的表格单元格,但它并未在运行时被切断。