UIAlertController 使ってみた
UIAlertController を使うことで Alert や Action Sheet を画面に表示することができます。 Alert や Action Sheet とはこういうやつ↓です。
Alert | Action Sheet |
---|---|
使う際の流れとしては、以下のような感じです。 Alert も Action Sheet もやることは同じなので Alert について書きます。
- Alert となる UIAlertController のインスタンスを生成する
- 表示する各項目 (キャンセルボタンとか) を作る
- 各項目をインスタンスに設定する
- 表示する ViewController で present する
Alert となる UIAlertController のインスタンスを生成する
インスタンス生成時にタイトルとメッセージと Action か Action Sheet かを設定します。
let alert = UIAlertController(title: "Alert", message: "Alert Message", preferredStyle: .alert // ここを .actionSheet に変えると Action Sheet になります )
表示する各項目 (キャンセルボタンとか) を作る
項目の style (UIAlertActionStyle) は .default
, .destructive
, cancel
の3つがあります。
.cancel
以外は複数指定できます。
let defaultAction = UIAlertAction(title: "Default", style: .default, handler: { action in print("Default") }) let destructiveAction = UIAlertAction(title: "Destructive", style: .destructive, handler: { action in print("Destructive") }) let cancelAction = UIAlertAction(title: "Cancel", style: .cancel, handler: { action in print("Cancel") })
各項目をインスタンスに設定する
インスタンスに対して addAction(action: UIAlertAction)
で設定できます。
alert.addAction(defaultAction) alert.addAction(destructiveAction) alert.addAction(cancelAction)
表示する ViewController で present する
現在表示されている ViewController で Alert を表示する場合は以下のように書きます。
present(alert, animated: true, completion: nil)
iPad 対応
iPad の場合、 Action Sheet はポップオーバーで表示されます。
Action Sheet for iPad |
---|
この時、以下の設定がされていないとクラッシュするので忘れないよう気をつけてください。
// 表示先の View actionSheet.popoverPresentationController?.sourceView = view // 表示場所 actionSheet.popoverPresentationController?.sourceRect = rect
サンプル
こちらにサンプルを置いたので良かったら試してみてください。