LoginSignup
0
1

指定した時間で閉じるアラートの後に処理を実行する

Posted at

概要

アラートを表示した後指定した時間で閉じ、さらにその後処理を実行する方法です。
今回は閉じるボタンをつけていないですが、必要に応じてaddActionを使ってボタンを追加します。

コード

1. アラートを表示するメソッドを作成する

func showAutoDismissAlert(title: String, message: String, completion: (() -> Void)?) {
    let alert = UIAlertController(title: title, message: message, preferredStyle: .alert)
    present(alert, animated: true)
        
    DispatchQueue.main.asyncAfter(deadline: .now() + 2.0) {
        alert.dismiss(animated: true) {
            // アラートが閉じられた後にコードを実行
            completion?()
        }
    }
}

DispatchQueue.main.asyncAfterを用いて2秒後に閉じるように設定しています。2.0を変更すると、任意に閉じるまでの時間を指定することができます。
completionを引数に指定することで、showAutoDismissAlertを呼び出す際にクロージャでアラートが閉じた後に実行したいコードを渡すことができます。

2.作成したメソッドを呼び出す

showAutoDismissAlert(title: "ありがとうございました", message: "2秒後に閉じます") {
    // アラートが閉じた後に実行するコード
    // 画面遷移など
    hogehoge()
}

showAutoDismissAlertにアラート表示内容のtitle,messageを渡し、クロージャ内で処理を記述します。

処理を行わない場合

showAutoDismissAlert(title: "ご利用いただきありがとうございました。", message: "ログイン画面に移動します", completion: nil)

completionnilを渡すことで処理を行わずに閉じることもできます。

おわりに

このような自動で消えるダイアログは、例えば削除などの処理を終えた時に活躍します。
例えば画面遷移する場合、これからどの画面に移動するのかをアラートで明示し、アラートが消えた後に画面遷移するとユーザー体験が向上すると感じます。
実装してみて、ちょっとリッチなアプリになった気がします。

お読みいただき、ありがとうございました。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1