私は最近、iOS アプリを書き直して、新しいUISearchControllerユニバーサル ストーリーボードを使用するようにしました。私のアプリは両方のデバイス ( iPhoneとiPad ) で使用できるため、 を使用したユニバーサル ストーリーボードへの変更UISplitViewControllerは大きな利点でした。
しかし、悲しいことに、UISearchController期待どおりに機能していません。UISearchController次の行を追加しました。
self.searchController = UISearchController(searchResultsController: nil)
self.searchController.searchBar.sizeToFit()
self.searchController.dimsBackgroundDuringPresentation = false
self.myTableView.tableHeaderView = self.searchController.searchBar
self.searchController.searchResultsUpdater = self
self.definesPresentationContext = true
私のコントローラーチェーンは次のようなものです:
UISplitViewController
UITabbarController (Master)
UINavigationController
UITableViewController
UINavigationController (Detail)
UINavigationController
UIViewController
問題は、iPad アプリでUISearchBarは が で覆われていることUINavigationBarです。しかし、タブを切り替えてビューに戻ると。UISearchBarが見えます。したがって、どういうわけか、タブバーを切り替えた後、ビューが正しく再描画されます。iPhone版では自動で正しく動作します。
iPadアプリ
最初の打ち上げの後はUISearchBar、UINavigationBar

タブを切り替えた後、UISearchBar正しく表示されます

iPhoneアプリ
タブを変更しなくても iPhone アプリは正常に動作しています。

私が試したこと:
- extendsEdges の異なる設定の使用
- 後で検索コントロールを追加することでだますことができると思ったので、viewWillAppear メソッドに SearchController を追加します。