shobylogy

叩けシンプルの杖

UIAlertControllerを最前面に表示できるよう拡張する

UIAlertController、UIAlertViewのshowみたいな感覚で表示できなくて不便ですよね。

特に、Modalで表示したViewControllerの上に、UIAlertControllerを被せるような使い方をしようと思うと大変です。

そこで、若干ゴリ押しですが、常に最前面にUIAlertControllerを表示できるようにしてみました。

これだとUIAlertViewのshowみたいな感覚で使えると思います。

extension UIAlertController {
    // 最前面にUIAlertを表示する。UIAlertViewのshowと同じようなメソッド
    func presentInFront(completion completion: (() -> Void)?) {
        guard let rootViewController = UIApplication.sharedApplication().delegate?.window??.rootViewController else {
            return
        }
        
        if let presentedViewController = rootViewController.presentedViewController {
            presentedViewController.presentViewController(self, animated: true, completion: completion)
        } else {
            rootViewController.presentViewController(self, animated: true, completion: completion)
        }
    }
}