Search code examples
iosobjective-cuiimageviewuialertcontroller

How to add UIImageView in UIAlertController?


I want UIAlertController to present an alert with UIImageView in an ActionSheet. But when I run the application it is terminating.

This is my code:

UIAlertController *alert = [UIAlertController
                                  alertControllerWithTitle:@"Title"
                                  message:@"Welcome"
                                  preferredStyle:UIAlertControllerStyleAlert];
UIAlertAction *okButton = [UIAlertAction
                            actionWithTitle:OK
                            style:UIAlertActionStyleDefault
                            handler:^(UIAlertAction *action)
                            {
                            }];
[alert addAction:okButton];
UIImageView *imgv = [[UIImageView alloc]initWithFrame:CGRectMake(20,20,50,50)];
imgv.image = [UIImage imageNamed:@"kaga.jpg"];
[alert setValue:imgv forKey:@"image"];
[self presentViewController:alert animated:YES completion:nil];

Solution

  • It is not possible to add an image to a UIAlertController according to Apple Doc.

    if you want then you can create your own custom view like:

    https://github.com/wimagguc/ios-custom-alertview

    If you want to take image appear on button then Try like this:

    UIAlertController * alert = [UIAlertController alertControllerWithTitle:@"Title"
                                  message:@"Welcome"
                                  preferredStyle:UIAlertControllerStyleActionSheet];
    
    UIAlertAction* okButton = [UIAlertAction actionWithTitle:@"OK"
                                style:UIAlertActionStyleCancel
                                handler:^(UIAlertAction * action) {
                                  //Do some thing here
                                }];
    
    [okButton setValue:[[UIImage imageNamed:@"kaga.jpg"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal] forKey:@"image"];
    
    [alert addAction:okButton];
    [self presentViewController:alert animated:YES completion:nil];