web-dev-qa-db-ja.com

SearchController検索バーをtableHeaderViewまたはnavigationItem.titleviewではないビューに設定するにはどうすればよいですか?

テーブルがスクロールする間、検索バーを表示したままにしようとしています。現時点では、テーブルビューのヘッダーとして配置しており、正常に機能しますが、もちろん、テーブルを下に移動すると、検索バーが画面からスクロールアウトします。このコードサンプルを変更するだけでこれができると思いました。

ISearchBarがナビゲーションバーにあり、スコープボタンがあるiOS 8でUISearchControllerを使用するにはどうすればよいですか?

searchController = UISearchController(searchResultsController: nil)
searchController.searchResultsUpdater = self
searchController.delegate = self
searchController.searchBar.delegate = self
searchController.dimsBackgroundDuringPresentation = false
searchController.hidesNavigationBarDuringPresentation = false
tableview.tableHeaderView = searchContoller.searchBar // How to put it elsewhere?
//Alternative that also works
navigationItem.titleView = searchController.searchBar

アイデアは、他の見方をして、

otherview = searchController.searchBar

たとえば、UISearchBarへのアウトレット、空白のUIView、またはそのようなものです。

しかし、そうするとsearchBarが表示されません。これは、テーブルのヘッダービューまたはnavigationItem.titleViewとしてのみ機能するようです。

私は何かが足りないのですか?

17
Carlos

テーブルビューの上に配置された空白のUIViewがある場合。

searchContainerと呼ばれるその空白のUIViewへのアウトレットがあると仮定しましょう。次に、次の行を追加して、UISearchControllerの検索バーをそのビューに追加できます。

searchContainer.addSubview(searchController.searchBar)
28