2016-12-05 73 views
1

我正在为使用Xcode 8(版本8.1(8B62)的iOS 10进行开发),我试图开发一个视图控制器,它在tableView之上显示一个固定的searchBar。我有初始布局,但是当我激活searchBar时,它完全从我的视野中消失。SearchController SearchBar从视图中消失

这里是我的视图控制器的视图层次:

View 
| 
|---- UISearchBar 
| 
|---- UITableView 

,这里是什么样子:现在

initial layout

,问题。由于没有用于包含UISearchController的界面生成器工具,就像UISearchDisplayController那样,我将searchBar以编程方式添加到我的视图控制器的viewDidLoad方法中的界面中,并且我使用searchController.searchBar替换了我在故事板中使用的临时UISearchBar :

activated searchBar

// 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) 
} 

当我运行的应用程序,并激活连接到我的searchControllersearchBar对象,它从视野中消失

tableView也奇怪地移动,但我的主要重点是让searchBar留在视图内。我尝试了一些不同的事情来完成这项工作,但我没有运气。任何帮助深表感谢。我只是觉得这不应该很难实现。我可以用UISearchDisplayController这个对象来完成,但这些对象已经被弃用了,我试图成为一名优秀的程序员而不是使用它。

回答

0

我和你有同样的问题。该问题源于尝试手动设置searchBar的框架。你需要故事板中的临时搜索栏吗?

为了解决这个问题删除你设置框架的代码和故事板连接你的tableview到您的代码:

override func viewDidLoad() { 
super.viewDidLoad() 

searchController = UISearchController(searchResultsController: nil) 
searchController.searchResultsUpdater = self 
tableView.tableHeaderView = searchController.searchBar 
}