- iOS
- 2017-05-24 - 更新:2018-02-15
UISearchControllerを使っていると、ViewControllerが破棄されるタイミングで以下のような警告が出てきました。
[Warning] Attempting to load the view of a view controller while it is deallocationg is not allowed and may result in undefined behavior (<UISearchController: ...>)
どうやらViewControllerが破棄されるタイミングでSearchControllerも破棄してやらないといけないようです。
以下のコードを追加したら解決しました。
deinit { searchController.view.removeFromSuperview() }
また、実際に検索をして別画面に遷移した際に、UISearchControllerの表示が残ったままになる問題が発生しました。
キャンセルをタップすれば消すことができますが、それでは気持ちが悪いので解決させたい。
解決方法は遷移元のUIViewControllerのviewDidonLoadに以下の1行を追加するだけです。
definesPresentationContext = true
私の場合、原因はUINavigationControllerを使っていたことでした。
こちらで詳しく解説されています。
参考URL: http://qiita.com/color_box/items/d13b04a88587088019af
Xcode: 8.3.2
Swift: 3.1
OS: Sierra 10.12