2016-12-05 16 views
1

Xcode 8(正確にはバージョン8.1(8B62))を使用してiOS 10用に開発しており、tableViewより上の固定searchBarを表示するビューコントローラーを開発しようとしています。私は最初のレイアウトを持っていますが、searchBarを有効にすると、それは私の見解から完全に消えます。ここでSearchController SearchBarが表示から消える

は私のビューコントローラのビュー階層である:

initial layout

さて、問題:

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

、ここではそれがどのように見えるかです。 UISearchDisplayControllerのようなUISearchControllerを含むためのInterface Builderツールがないので、私はsearchBarをプログラムで私のView Controllerの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オブジェクトをアクティブにすると、それが視界から消える:

activated searchBar

tableViewも変わっていますが、主な焦点はsearchBarです。私はこの仕事をするためにいくつかの異なることを試みましたが、私は運がゼロです。どんな助けも大歓迎です。私は実装するのが難しいことではないはずです。私はUISearchDisplayControllerオブジェクトでうまくやることができますが、それらは非難されています。私は良いプログラマーになろうと努力しています。

答えて

0

私と同じ問題があります。この問題は、searchBarのフレームを手動で設定しようとしていることに起因します。ストーリーボードに一時的な検索バーが必要ですか?

override func viewDidLoad() { 
super.viewDidLoad() 

searchController = UISearchController(searchResultsController: nil) 
searchController.searchResultsUpdater = self 
tableView.tableHeaderView = searchController.searchBar 
} 
:これはあなたがフレームを設定し、あなたのコードにストーリーボードからあなたのテーブルビューを接続するコードを削除する修正するには

関連する問題