Adding a simple UIAlertView
When you want the alert to show, do this:
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"ROFL" message:@"Dee dee doo doo." delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];[alert show]; // If you're not using ARC, you will need to release the alert view. // [alert release];
If you want to do something when the button is clicked, implement this delegate method:
- (void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex { // the user clicked OK if (buttonIndex == 0) { // do something here... }}
And make sure your delegate conforms to UIAlertViewDelegate
protocol:
@interface YourViewController : UIViewController <UIAlertViewDelegate>
Other answers already provide information for iOS 7 and older, however UIAlertView
is deprecated in iOS 8.
In iOS 8+ you should use UIAlertController
. It is a replacement for both UIAlertView
and UIActionSheet
. Documentation: UIAlertController Class Reference. And a nice article on NSHipster.
To create a simple Alert View you can do the following:
UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"Title" message:@"Message" preferredStyle:UIAlertControllerStyleAlert];//We add buttons to the alert controller by creating UIAlertActions:UIAlertAction *actionOk = [UIAlertAction actionWithTitle:@"Ok" style:UIAlertActionStyleDefault handler:nil]; //You can use a block here to handle a press on this button[alertController addAction:actionOk];[self presentViewController:alertController animated:YES completion:nil];
Swift 3 / 4 / 5:
let alertController = UIAlertController(title: "Title", message: "Message", preferredStyle: .alert)//We add buttons to the alert controller by creating UIAlertActions:let actionOk = UIAlertAction(title: "OK", style: .default, handler: nil) //You can use a block here to handle a press on this buttonalertController.addAction(actionOk)self.present(alertController, animated: true, completion: nil)
Note, that, since it was added in iOS 8, this code won't work on iOS 7 and older. So, sadly, for now we have to use version checks like so:
NSString *alertTitle = @"Title";NSString *alertMessage = @"Message";NSString *alertOkButtonText = @"Ok";if (@available(iOS 8, *)) { UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:alertTitle message:alertMessage delegate:nil cancelButtonTitle:nil otherButtonTitles:alertOkButtonText, nil]; [alertView show];}else { UIAlertController *alertController = [UIAlertController alertControllerWithTitle:alertTitle message:alertMessage preferredStyle:UIAlertControllerStyleAlert]; //We add buttons to the alert controller by creating UIAlertActions: UIAlertAction *actionOk = [UIAlertAction actionWithTitle:alertOkButtonText style:UIAlertActionStyleDefault handler:nil]; //You can use a block here to handle a press on this button [alertController addAction:actionOk]; [self presentViewController:alertController animated:YES completion:nil];}
Swift 3 / 4 / 5:
let alertTitle = "Title"let alertMessage = "Message"let alertOkButtonText = "Ok"if #available(iOS 8, *) { let alertController = UIAlertController(title: alertTitle, message: alertMessage, preferredStyle: .alert) //We add buttons to the alert controller by creating UIAlertActions: let actionOk = UIAlertAction(title: alertOkButtonText, style: .default, handler: nil) //You can use a block here to handle a press on this button alertController.addAction(actionOk) self.present(alertController, animated: true, completion: nil)}else { let alertView = UIAlertView(title: alertTitle, message: alertMessage, delegate: nil, cancelButtonTitle: nil, otherButtonTitles: alertOkButtonText) alertView.show()}
UPD: updated for Swift 5. Replaced outdated class presence check with availability check in Obj-C.
UIAlertView is deprecated on iOS 8. Therefore, to create an alert on iOS 8 and above, it is recommended to use UIAlertController:
UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"Title" message:@"Alert Message" preferredStyle:UIAlertControllerStyleAlert];UIAlertAction *defaultAction = [UIAlertAction actionWithTitle:@"Ok" style:UIAlertActionStyleDefault handler:^(UIAlertAction *action){ // Enter code here}];[alert addAction:defaultAction];// Present action where needed[self presentViewController:alert animated:YES completion:nil];
This is how I have implemented it.