0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

UIAlertActionを使ってダイアログを表示させる(備忘録)

Posted at

##目的
UIAlertControllerを使う時、配置を混同しがちなので、その備忘録を作りました。

スクリーンショット 2020-09-20 11.55.16.png

##動作環境
XcodeのバージョンはVersion 11.6 です。

##備忘録に使うサンプル
画像を保存するものです。

##コードの配置(概要)
基本の並びは下記の通りです。

①UIAlertControllerをインスタンス化

②UIAlertAction(UIAlertControllerに載せる選択肢)をインスタンス化

③UIAlertControllerを表示

スクリーンショット 2020-09-20 12.05.50.png

###①UIAlertControllerをインスタンス化
####引数の設定
#####title ・・・ 名前の通り、タイトルの設定です。 String型で設定すると、メッセージの上に表示されます。

#####message ・・・ これも名前の通りです。表示させたい文をString型で設定します。

#####preferredStyle ・・・ これは表示の仕方です。.alert か .actionSheet を選びます。.alertは上の画像のような形です。.actionSheet は下のような形です。
スクリーンショット 2020-09-20 11.57.25.png

###②UIAlertAction(UIAlertControllerに載せる選択肢)をインスタンス化
表示させたい選択肢の分だけUIAlertActionを記述して、追加していきます。

###引数の設定

#####title ・・・ 表示する文です。String型で設定します。

#####style ・・・ 選択した時の動きの表示を設定します。 .cancel .default .destructiveの3つから選びます。前からキャンセル、アクション、デリートとなります。あくまで表示の設定なので、例えばキャンセルに設定したからといって、キャンセルボタンみたいな動きにはなりません。.cancelは太字になり、.destructiveの表示は赤字になります。

#####handler ・・・ styleで、表示をタップした時に起こる行動をクロージャにて設定します。タップした後のコードをここに書き込むことで、UIAlertActionがようやく機能を持ちます。

サンプルでは.defaultの方に保存をタップした場合に画像が変数の中に入っていれば、画像を端末に保存するコードが記述されており、.cancelの方には画面を閉じて前の画面に戻るというコードが記述されています。クロージャ内の記述ではselfを忘れがちなので、気を付けましょう。

引数の設定およびクロージャ内のコード記述が終わったら、alertController.addAction()を記述して、alertControllerの選択肢として表示に追加します。

※alertController.preferredAction = alertActionの文はなくても動きます。これは、.defaultのスタイルで表示させた場合、文字を太字にできます。コードはalertController.addAction()の後に書きます。

###③UIAlertControllerを表示
present(UIAlertController,animated: Bool)を記述してUIAlertControllerを表示させます。

##サンプルに使ったコード


        let alertController = UIAlertController(title: nil, message: "保存しますか?", preferredStyle: .actionSheet)

        
        let alertAction = UIAlertAction(title: "保存", style: .default, handler: { (act) in
            if self.pictureImage.image == self.pictureImage.image{
                UIImageWriteToSavedPhotosAlbum(self.pictureImage.image!, self, nil, nil)
            }
        })
        alertController.addAction(alertAction)

        alertController.preferredAction = alertAction
        
        let cancelAction = UIAlertAction(title: "キャンセル", style: .cancel, handler: {(act) in
            self.dismiss(animated: true, completion: nil)
        })
        
        
        alertController.addAction(cancelAction)
        
        
        present(alertController,animated: true)

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?