Add image to UIAlertController

richc picture richc · Aug 17, 2015 · Viewed 11.5k times · Source

I want to add an image to UIAlertController. Image does not need to be on a button, just presented in the middle of the controller. The code I have is below but crashes with message "unrecognised selector sent to instance".

func showAlert () {

    let alert = UIAlertController(title: "Title of Alert",
        message: "none",
        preferredStyle:UIAlertControllerStyle.ActionSheet)

    // add an image
    let image = UIImage(named: "example")
    var imageView = UIImageView(image: image)
    imageView.frame = CGRectMake(0, 0, 100, 100)

    var imageAction = UIAlertAction(title: "", style:.Default, handler: nil)
    imageAction.setValue(imageView, forKey: "image")
    alert.addAction(imageAction)

    // add a continue button
    var action = UIAlertAction(title: "Continue", style:.Default, handler: {(alert:UIAlertAction!) in self.continue() })
    alert.addAction(action)

    // show the UIAlertController
    self.presentViewController(alert, animated: true, completion: nil)

}

Answer

Willow Bumby picture Willow Bumby · Aug 17, 2015

Unfortunately Apple does not allow us to add images to UIAlertController or UIAlertView. These APIs are limited to Apple's Human Interface Guidelines.

If you really need an image in a UIAlertController-like dialog, I would recommend trying to use something like https://github.com/wimagguc/ios-custom-alertview.