SearchController SearchBar从视图中消失
问题描述:
我正在为使用Xcode 8(版本8.1(8B62)的iOS 10进行开发),我试图开发一个视图控制器,它在tableView
之上显示一个固定的searchBar
。我有初始布局,但是当我激活searchBar
时,它完全从我的视野中消失。SearchController SearchBar从视图中消失
这里是我的视图控制器的视图层次:
View
|
|---- UISearchBar
|
|---- UITableView
,这里是什么样子:现在
,问题。由于没有用于包含UISearchController
的界面生成器工具,就像UISearchDisplayController
那样,我将searchBar
以编程方式添加到我的视图控制器的viewDidLoad
方法中的界面中,并且我使用searchController.searchBar
替换了我在故事板中使用的临时UISearchBar :
// attribute to store the searchController
var searchController: UISearchController!
// temporary searchBar from storyboard
@IBOutlet weak var tempSearchBar: UISearchBar!
...
override func viewDidLoad() {
super.viewDidLoad()
searchController = UISearchController(searchResultsController: nil)
searchController.searchResultsUpdater = self
searchController.searchBar.frame = tempSearchBar.frame
tempSearchBar.removeFromSuperview()
view.addSubview(searchController.searchBar)
}
当我运行的应用程序,并激活连接到我的searchController
的searchBar
对象,它从视野中消失
tableView
也奇怪地移动,但我的主要重点是让searchBar
留在视图内。我尝试了一些不同的事情来完成这项工作,但我没有运气。任何帮助深表感谢。我只是觉得这不应该很难实现。我可以用UISearchDisplayController
这个对象来完成,但这些对象已经被弃用了,我试图成为一名优秀的程序员而不是使用它。
答
我和你有同样的问题。该问题源于尝试手动设置searchBar的框架。你需要故事板中的临时搜索栏吗?
为了解决这个问题删除你设置框架的代码和故事板连接你的tableview到您的代码:
override func viewDidLoad() {
super.viewDidLoad()
searchController = UISearchController(searchResultsController: nil)
searchController.searchResultsUpdater = self
tableView.tableHeaderView = searchController.searchBar
}