【Swift】Toast通知をUIViewControllerのextensionで実装する

Toast通知を出すのみ
extension UIViewController {
    func toast(message: String) {
        let alert = UIAlertController(title: nil, message: message, preferredStyle: .alert)
        self.present(alert, animated: true, completion: {
            // アラートを閉じる
            DispatchQueue.main.asyncAfter(deadline: .now() + 1.0, execute: {
                alert.dismiss(animated: true, completion: nil)
            })
        })
    }
}
使う側(ViewController)
self.toast(message: "通知がきたよ!")
Toast通知後にイベントを実行(画面閉じるとか)
extension UIViewController {
    func toast(message: String, callback: @escaping () -> Void) {
        let alert = UIAlertController(title: nil, message: message, preferredStyle: .alert)
        self.present(alert, animated: true, completion: {
            // アラートを閉じる
            DispatchQueue.main.asyncAfter(deadline: .now() + 1.0, execute: {
                alert.dismiss(animated: true, completion: nil)
                callback()
            })
        })
    }
}
使う側(ViewController)
self.toast(message: "通知が来たよ!画面を閉じよう!") {
            self.navigationController?.popViewController(animated: true)
        }
OKボタン付き(ボタンタップイベント設定可能)
extension UIViewController {
     func toast(mainMessage: String, subMessage: String, callback: @escaping () -> Void) {
         let alert: UIAlertController = UIAlertController(title: mainMessage, message: subMessage, preferredStyle:  
         UIAlertControllerStyle.alert)
         let defaultAction: UIAlertAction = UIAlertAction(title: "OK", style: UIAlertActionStyle.default, handler: {
         (action: UIAlertAction!) -> Void in
              callback()
         })
         alert.addAction(defaultAction)
         present(alert, animated: true, completion: nil)
    }
}
使う側(ViewController)
self.toast(mainMessage: "エラーが発生しました", subMessage: "ボタンタップでイベント発生") {
                // ボタンがタップされた時のイベントを記述
            }
OK&キャンセルボタンつき
// OK or CancelToast
    func toast(title: String, message: String, callback: @escaping () -> Void) {
        let alert: UIAlertController = UIAlertController(title: title, message: message, preferredStyle:  UIAlertControllerStyle.alert)
        let defaultAction: UIAlertAction = UIAlertAction(title: "OK", style: UIAlertActionStyle.default, handler: {
            (action: UIAlertAction!) -> Void in
            callback()
        })
        let cancelAction: UIAlertAction = UIAlertAction(title: "キャンセル", style: UIAlertActionStyle.cancel, handler: {
            (action: UIAlertAction!) -> Void in
        })
        alert.addAction(cancelAction)
        alert.addAction(defaultAction)

        present(alert, animated: true, completion: nil)
    }
使う側(ViewController)
 self.toast(title: "ほんとにいいの?", message: "ほんとにほんとにいいの?") {
                // OKが選択された場合の処理
            }
参考テキスト
詳解Swift 第3版 [ 荻原 剛志 ]

詳解Swift 第3版 [ 荻原 剛志 ]

価格:3,456円
(2017/1/3 01:58時点)
感想(0件)

スポンサーサイト
広告

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中