In this tutorial, you will learn how to create and present an alert dialog in Swift.
An alert dialog in Swift is created using a UIAlertController class. The below Swift code snippets demonstrate how to:
- Create a new alert message using UIAlertController,
- How to present an alert dialog to the user,
- How to add one or more action buttons and how to handle button events,
- You will also learn how to change the UIAlertController style.
If you are interested in video lessons on how to write Unit tests and UI tests to test your Swift mobile app, check out this page: Unit Testing Swift Mobile App
Creating an Alert
To create a new alert dialog, we will need to use a UIAlertController class. The below code snippet demonstrates how to create and how to present a dialog message.
Note: The below code snippet will create an alert dialog with no action buttons. This means that the user will not be able to dismiss it. See the next code snippet to learn how to add action buttons.
// Create a new alert var dialogMessage = UIAlertController(title: "Attention", message: "I am an alert message you cannot dissmiss.", preferredStyle: .alert) // Present alert to user self.present(dialogMessage, animated: true, completion: nil)
Adding Action Buttons to Alert Dialog
The above Swift code snippet creates and displays an alert message but it does not contain any action buttons and thus the user will not have any means to dismiss it. To create an action button that the user can tap on, we will need to create a new instance of an UIAlertAction class and add it to our alert object.
// Create new Alert var dialogMessage = UIAlertController(title: "Confirm", message: "Are you sure you want to delete this?", preferredStyle: .alert) // Create OK button with action handler let ok = UIAlertAction(title: "OK", style: .default, handler: { (action) -> Void in print("Ok button tapped") }) //Add OK button to a dialog message dialogMessage.addAction(ok) // Present Alert to self.present(dialogMessage, animated: true, completion: nil)
To add one more button to UIAlertController simply create a new UIAlertAction object and add it to the alert. The below code snippet demonstrates how to create UIAlertController with two action buttons.
// Create Alert var dialogMessage = UIAlertController(title: "Confirm", message: "Are you sure you want to delete this?", preferredStyle: .alert) // Create OK button with action handler let ok = UIAlertAction(title: "OK", style: .default, handler: { (action) -> Void in print("Ok button tapped") }) // Create Cancel button with action handlder let cancel = UIAlertAction(title: "Cancel", style: .cancel) { (action) -> Void in print("Cancel button tapped") } //Add OK and Cancel button to an Alert object dialogMessage.addAction(ok) dialogMessage.addAction(cancel) // Present alert message to user self.present(dialogMessage, animated: true, completion: nil)
Make an Action Button Call a Function
When the user taps on one of the action buttons, we want to call a function that will perform some operation. The below Swift code snippet demonstrates how to make an OK button call a function.
import UIKit class ViewController: UIViewController { override func viewDidAppear(_ animated: Bool) { super.viewDidAppear(animated) displayAlert() } func displayAlert() { // Declare Alert message let dialogMessage = UIAlertController(title: "Confirm", message: "Are you sure you want to delete this?", preferredStyle: .alert) // Create OK button with action handler let ok = UIAlertAction(title: "OK", style: .default, handler: { (action) -> Void in print("Ok button tapped") self.deleteRecord() }) // Create Cancel button with action handlder let cancel = UIAlertAction(title: "Cancel", style: .cancel) { (action) -> Void in print("Cancel button tapped") } //Add OK and Cancel button to dialog message dialogMessage.addAction(ok) dialogMessage.addAction(cancel) // Present dialog message to user self.present(dialogMessage, animated: true, completion: nil) } func deleteRecord() { print("Delete record function called") } }
Adding a Text Field to Alert
You can add a text field to an alert dialog. The below code example demonstrates how to add a UITextField to UIAlertController.
// Declare Alert message let dialogMessage = UIAlertController(title: "Alert", message: "Are you sure you want to delete this?", preferredStyle: .alert) // Add text field dialogMessage.addTextField(configurationHandler: { textField in textField.placeholder = "Type in your PIN for it to work" })
When an action button tapped, you can access the text field and read its value.
// Create OK button with action handler let ok = UIAlertAction(title: "OK", style: .default, handler: { (action) -> Void in print("Ok button tapped") print("PIN code typed = \(dialogMessage.textFields?.first?.text ?? "")") })
Video tutorial
Have a look at this video tutorial to see how to create and present UIViewController.