Search code examples
iosobjective-cuiactionsheet

How to add UIActionSheet button check mark?


I wonder how to add check mark to the right of actionSheet button the simplest way? Bellow is a screenshot of Podcasts app.

enter image description here


Solution

  • Note that the solution can crash in a future update to iOS. I'm accessing undocumented private APIs. Such solutions are very fragile. Please see the comments below.

    Finally I got the answer by using UIAlertController:

    UIAlertController *customActionSheet = [UIAlertController alertControllerWithTitle:nil message:nil preferredStyle:UIAlertControllerStyleActionSheet];
    
    UIAlertAction *firstButton = [UIAlertAction actionWithTitle:@"First Button" style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) {
        //click action
    }];
    [firstButton setValue:[UIColor blackColor] forKey:@"titleTextColor"];
    [firstButton setValue:[UIColor blackColor] forKey:@"imageTintColor"];
    [firstButton setValue:@true forKey:@"checked"];
    
    UIAlertAction *secondButton = [UIAlertAction actionWithTitle:@"Second Button" style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) {
        //click action
    }];
    [secondButton setValue:[UIColor blackColor] forKey:@"titleTextColor"];
    
    UIAlertAction *cancelButton = [UIAlertAction actionWithTitle:@"Cancel" style:UIAlertActionStyleCancel handler:^(UIAlertAction *action){
        //cancel
    }];
    [cancelButton setValue:[UIColor blackColor] forKey:@"titleTextColor"];
    
    [customActionSheet addAction:firstButton];
    [customActionSheet addAction:secondButton];
    [customActionSheet addAction:cancelButton];
    
    [self presentViewController:customActionSheet animated:YES completion:nil];
    

    And this is the result:

    UIActionSheet button check mark