私は最近、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 を追加します。