Search code examples
iosswiftuialertview

Swift: UIAlert in function - Use of unresolved identifier 'present'


I'm trying to limit the show of code so I just want to call function containing two strings to create a uialert faster with 1 line instead of 5/

The error I'm getting

Use of unresolved identifier 'present'

at the line

present(alert, animated: true, completion: nil)

// Controlling Alerts for Errors
func showAlert(titleString: String, messageString: String) {

 // Alert to go to Settings
 let alert = UIAlertController(title: titleString, message: messageString, preferredStyle: .alert)

 alert.addAction(UIAlertAction(title: "Dismiss", style: .default, handler: { _ in
     alert.dismiss(animated: true, completion: nil)
 }))

 self.present(alert, animated: true, completion: nil)
}

Solution

  • In the comments, you explained that this is a stand-alone function. It should work if you make it an extension to UIViewController, for instance:

    extension UIViewController {
        public func showAlert(_ title:String, _ message:String) {
            let alertVC = UIAlertController(
                title: title,
                message: message,
                preferredStyle: .alert)
            let okAction = UIAlertAction(
                title: "OK",
                style: .cancel,
                handler: { action -> Void in
            })
            alertVC.addAction(okAction)
            present(
                alertVC,
                animated: true,
                completion: nil)
        }
    

    }

    And to call it in a UIViewController:

    showAlert(
        "Could Not Send Email", 
        "Your device could not send e-mail.  Please check e-mail configuration and try again."
    )