iOSアプリ開発でUIAlertControllerを使ってアクションシートを作成する
iOSアプリ開発でUIAlertControllerを使ってアクションシートを作成するメモです。
アラートを作成する方法とほとんど同じです。アラートの作成方法は iOSアプリ開発でアラートを表示する - 使って創ってApp に書いてあります。
開発環境
完成予定図
アクションシートを作成する
Show ActionSheet ボタンをタップすると、アクションシートが表示されます。アクションシートには Editボタン Deleteボタン Cancelボタンがあります。
アクションシートを表示する時にコンソールに Show ActionSheet と表示し、Edit をタップしたら Pressed Edit 、 Delete をタップしたら Pressed Delete 、Cancel をタップしたら Pressed Cancel とコンソールに表示します。
アクションシートを表示する
UIAlertViewController クラスのインスタンスと、アクションシートに表示させるボタンの数だけ UIAlertAction クラスのインスタンスを作成します。作成した action を UIAlertViewController クラスのインスタンスに登録します。
-
UIAlertViewController クラスのインスタンスを作成
let actionsheet = UIAlertController(title: "ActionSheet", message: "This is ActionSheet!", preferredStyle: .ActionSheet) -
UIAlertAction クラスのインスタンスを作成
let action_edit = UIAlertAction(title: "Edit", style: .Default) { (action) -> Void in
print("Edit Pressed")
}
let action_delete = UIAlertAction(title: "Delete", style: .Destructive) { (action) -> Void in
print("Delete Pressed")
}
let action_cancel = UIAlertAction(title: "Cancel", style: .Cancel) { (action) -> Void in
print("Cancel Pressed")
}アクションシートのボタンがタップされた時に起こす処理を、クロージャに書けます。今回はコンソールに文字を表示させます。
-
action を actionsheet に追加する
[action_edit, action_cancel, action_delete].forEach { (action) -> () in
alert.addAction(action)
} -
actionsheet を表示する
self.presentViewController(actionsheet, animated: true) { () -> Void in
print("ActionSheet Shown!")
}UIViewController クラスの presentViewController メソッドで actionsheet を表示させます。クロージャに書いた処理は、アクションシートが表示された時に実行されます。
おわりに
以上のコードを実行すると、アクションシートが表示されます。完成予定図のアプリでは、Show ActionSheetボタンをタップするとアクションシートを表示するようにしています。
action を actionseet に追加した順番は
- action_edit
- action_cancel
- action_delete
でしたが、表示順は
- action_edit
- action_delete
- action_cancel
でした。
UIAlertActionStyle を Cancel に指定した action は一番下に表示されるようですね。