Categories
SugiBlog ホームページ制作・システム開発|大阪

UISearchControllerの警告

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

108 views

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です