[Swift] UIAlertViewControllerを複数表示できるようにする


Swiftで、UIAlertViewControllerを複数呼び出すと次の様なエラーが出ます。

Warning: Attempt to present   on  which is already presenting 

これを回避するための方法のメモです。


Swift初心者ですので、もう少しいい書き方があれば教えてください。

// UIAlertController を作成
var alertController = UIAlertController(title: "タイトル", message: "メッセージ", preferredStyle: .Alert)
// すでにアラートが表示されている場合は、それを親 ViewController にする
var baseView: UIViewController = self.window!.rootViewController!
while baseView.presentedViewController != nil && !baseView.presentedViewController!.isBeingDismissed() {
baseView = baseView.presentedViewController!
}
// アラートを表示
baseView.presentViewController(alertController, animated: true, completion: nil)

これでアラートが複数表示されます!

🚌 参考リンク

Objective-C - iOS8でUIAlertViewからUIAlertControllerへ置き換えるのは大変だ

📚 おすすめの書籍

🖥 サーバについて

このブログでは「Cloud Garage」さんのDev Assist Program(開発者向けインスタンス無償提供制度)でお借りしたサーバで技術検証しています。 Dev Assist Programは、開発者や開発コミュニティ、スタートアップ企業の方が1GBメモリのインスタンス3台を1年間無料で借りれる心強い制度です!(有償でも1,480円/月と格安)