2016-12-05 70 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 
}