在我的swift 2应用程序中,我有一个带有搜索栏的表格视图:
但是,如果点击搜索栏,我的导航栏和搜索栏将被隐藏。
这是我在viewDidLoad
中的代码 self.resultSearchController = ({
let controller = UISearchController(searchResultsController: nil)
controller.searchResultsUpdater = self
controller.dimsBackgroundDuringPresentation = false
controller.searchBar.sizeToFit()
controller.hidesNavigationBarDuringPresentation = true
self.MyTable.tableHeaderView = controller.searchBar
return controller
})()
一开始我也收到这条消息:
尝试加载视图控制器的视图 不允许取消分配,可能导致未定义的行为 ()
我的问题是,我的错误在哪里? :/
答案 0 :(得分:1)
来自this教程,您可以使用此代码来解决问题。
self.navigationController!.navigationBar.translucent = false
searchController!.hidesNavigationBarDuringPresentation = false
// This makes the view area include the nav bar even though it is opaque.
// Adjust the view placement down.
self.extendedLayoutIncludesOpaqueBars = true
self.edgesForExtendedLayout = UIRectEdge.Top
答案 1 :(得分:1)
如果您想让它完美运行,您必须使用以下代码修改代码:
self.resultSearchController = UISearchController(searchResultsController: nil)
self.resultSearchController.searchResultsUpdater = self
self.resultSearchController.searchBar.delegate = self
self.definesPresentationContext = true
self.resultSearchController.dimsBackgroundDuringPresentation = false
self.resultSearchController.hidesNavigationBarDuringPresentation = true
if #available(iOS 11.0, *) {
self.navigationItem.searchController = self.resultSearchController
} else {
self.tableView.tableHeaderView = self.resultSearchController.searchBar
}