【Swift】UIAlertControllerの使い方。警告メッセージをポップアップ表示する。(Swift 2.1、XCode 7.2)

2020年6月16日

UIAlertControllerとは

UIAlertController(以下、アラートコントローラー)とは、警告や注意喚起のポップアップ画面を表示するための機能である。

表示スタイルには「Alert」と「ActionSheet」の2種類がある。

下図は「Alert」の表示例。画面中央に表示される。

Style「Alert」

 

下図は「ActionSheet」の表示例。下からニョキっと出てくる。

Style「ActiohSheet」

 

UIAlertControllerを使い方

まず、以下コードのようにアラートコントローラーのインスタンスを作成する。表示スタイルは先ほど説明したAlertとActionSheetのどちらかを設定する。

let alert = UIAlertController(title: 画面タイトル,message: メッセージ, preferredStyle: 表示スタイル)

 

画面にボタンを表示するには、以下のコードのようにアラートコントローラーにUIAlertActionを追加する。「ボタン押下時の処理」はクロージャを指定する。⇒「クロージャとは

let button = UIAlertAction(title: ボタンタイトル, style: 表示スタイル, handler: ボタン押下時の処理)
alert.addAction(button)

 

下表はスタイル一覧

スタイル 説明
UIAlertActionStyle.Default 黒文字
UIAlertActionStyle.Destructive 赤文字
UIAlertActionStyle.Cancel キャンセル。一番下に表示される。

 

そして、以下のメソッドでアラートコントローラーをモーダル表示する。

self.presentViewController(アラートコントローラー, animated: アニメーション有無, completion:完了時の処理)

 

UIAlertControllerを使ってみる

実際にアラートコントローラーを使って警告画面を表示してみよう。

以降の手順を行う前のXcodeプロジェクトをGitHubに置いたので、試してみる人はご利用下さい。
⇒「テスト用プロジェクト

ボタンを押すと次のビューコントローラーに画面遷移するところまでを実装しておいた。これを変更して、ボタンを押すと画面遷移前に確認メッセージがポップアップ表示されるものを実装する。

 

ViewController.swiftを以下のコードに変更する。viewDidLoadメソッドでアラートコントローラーを作成しておき、ボタンが押されたときに表示している。

 

以下は実際のプレイ動画

 

表示スタイルを「ActionSheet」にすれば画面下からメッセージとボタンが現れる。

アラートコントローラー以外の場所をタップして閉じる

表示スタイルが「Alert」の場合、そのままではアラートコントローラー以外の場所をタップしても何も起きない。

アラートコントローラー以外の場所をタップして画面を閉じるには、以下のコードのように、アラートコントローラーの親ビューにジェスチャーリコグナイザーを登録し、タップを検知させてアラートコントローラーを消す。

 

以下は実際のプレイ動画

 

テキストフィールドを追加する

表示スタイルが「Alert」のアラートコントローラーにテキストフィールドを追加するメソッドが用意されている。

以下のコードは「test」 という文字列を入力するまで画面遷移できない画面のサンプル。「Returnキー押下時の呼び出しメソッド」でテキストフィールドの文字列から画面遷移可否を判定している。

「続けるボタン」が押されたときも「Returnキー押下時の呼び出しメソッド」を流用して画面遷移可否を判定している。

 

以下は実際のプレイ動画