[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へ置き換えるのは大変だ

🖥 VULTRおすすめ

VULTR」はVPSサーバのサービスです。日本にリージョンがあり、最安は512MBで2.5ドル/月($0.004/時間)で借りることができます。4GBメモリでも月20ドルです。 最近はVULTRのヘビーユーザーになので、「ここ」から会員登録してもらえるとサービス開発が捗ります!

📚 おすすめの書籍