Action Sheets with UIAlertController
suggest changeWith UIAlertController
, action sheets like the deprecated UIActionSheet
are created with the same API as you use for AlertViews.
Simple Action Sheet with two buttons
Swift
let alertController = UIAlertController(title: "Demo", message: "A demo with two buttons", preferredStyle: UIAlertControllerStyle.actionSheet)
Objective-C
UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"Demo" message:@"A demo with two buttons" preferredStyle:UIAlertControllerStyleActionSheet];
Create the buttons “Cancel” and “Okay”
Swift
let cancelAction = UIAlertAction(title: "Cancel", style: .cancel) { (result : UIAlertAction) -> Void in
//action when pressed button
}
let okAction = UIAlertAction(title: "Okay", style: .default) { (result : UIAlertAction) -> Void in
//action when pressed button
}
Objective-C
UIAlertAction *cancelAction = [UIAlertAction actionWithTitle:@"Cancel" style:UIAlertActionStyleCancel handler:^(UIAlertAction * action) {
//action when pressed button
}];
UIAlertAction * okAction = [UIAlertAction actionWithTitle:@"Okay" style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) {
//action when pressed button
}];
And add them to the action sheet:
Swift
alertController.addAction(cancelAction)
alertController.addAction(okAction)
Objective-C
[alertController addAction:cancelAction];
[alertController addAction:okAction];
Now present the UIAlertController
:
Swift
self.present(alertController, animated: true, completion: nil)
Objective-C
[self presentViewController:alertController animated: YES completion: nil];
This should be the result:
Action Sheet with destructive button
Using the UIAlertActionStyle
.destructive
for an UIAlertAction
will create a button with red tint color.
For this example, the okAction
from above was replaced by this UIAlertAction
:
Swift
let destructiveAction = UIAlertAction(title: "Delete", style: .destructive) { (result : UIAlertAction) -> Void in
//action when pressed button
}
Objective-C
UIAlertAction * destructiveAction = [UIAlertAction actionWithTitle:@"Delete" style:UIAlertActionStyleDestructive handler:^(UIAlertAction * action) {
//action when pressed button
}];
Found a mistake? Have a question or improvement idea?
Let me know.
Table Of Contents