お仕事でSwift書いてます。
ちょっとハマったので、備忘録に。
今回は小難しい話なので、
プログラミングする人以外は意味がわからないと思います。
UIAlertControllerを生成して、presentしました。
通常の状態ならこれで出ます。
let alert = UIAlertController(title: title, message: title, preferredStyle: .alert) present(alert, animated: true, completion: nil)
ところが、今回試してみると、なぜか出てこない。
デバッグウィンドウにはこんなメッセージが出ています。
the navigation controller containing the presented search controller (<UISearchController: 0x10d002e00>) must have definesPresentationContext set to YES.
設定しましたが、変化なし。
もう一個何か出ています。
Warning: Attempt to present <UIAlertController: 0x10509d000> on <xxxxxController: 0x10c2226d0> which is already presenting (null)
メッセージを解釈すると、すでにpresentしている奴がいるとのこと。
と言われても、他に何も出していませんけど・・・?
サーチコントローラーを使って検索した状態でアラートを
出そうとすると問題が発生する
試しにこうやってみた。
searchController.present(alert, animated: true, completion: nil)
ビンゴ!
アラートが出ました。
ところが今度は
検索した状態じゃない場合にアラートが出ない。
(そりゃそうなる気がする)
最終的にこんな感じにしておきました。
if searchController.isActive { searchController.present(alert, animated: true, completion: nil) } else { present(alert, animated: true, completion: nil) }