Search code examples
iosuiactionsheet

Change UIActionsheet button text and background before showing


I show actionsheet to select number. but now I want to show the default selected button in actionsheet.

Code :

UIActionSheet *actionSheet = [[UIActionSheet alloc] initWithTitle:@"Select Number"
                                                             delegate:self
                                                    cancelButtonTitle:@"Cancel"
destructiveButtonTitle:nil otherButtonTitles:@"0",@"1",@"2",@"3",@"4",@"5",@"6",@"7",@"8",@"9",@"10", nil];


[actionSheet showInView:self.view];

Change Button Text and Background before Showing

- (void)willPresentActionSheet:(UIActionSheet *)actionSheet
{
    for (UIView *subview in actionSheet.subviews) {

        if ([subview isKindOfClass:[UIButton class]]) {

            UIButton *button = (UIButton *)subview;

            [button setTitleColor:[UIColor redColor] forState:UIControlStateSelected];

            if ([button.titleLabel.text isEqualToString:@"5"]) {

                button.selected = true;
                [button setBackgroundColor:[UIColor blueColor]];

            }
        }
    }
}

Edit:

Their is no error but actionsheet is shown and none of button is selected.


Solution

  • here is the solution

    - (void)willPresentActionSheet:(UIActionSheet *)actionSheet
    {
    
       for (UIView* subview in actionSheet.subviews) {
          for (UIView *tView in subview.subviews) {
              if ([tView isKindOfClass:[UITableView class]]) {
                UITableView *actionTableView = (UITableView *)tView;
                NSIndexPath *myIP = [NSIndexPath indexPathForRow:5 inSection:0];
                UITableViewCell *cell = [actionTableView cellForRowAtIndexPath:myIP];
                cell.backgroundColor = [UIColor blackColor];
                  for (UIView *cells in cell.subviews) {
                    for (UIView *subCells in cells.subviews) {
                        if ([subCells isKindOfClass:[UILabel class]]) {
                            UILabel *cellText = (UILabel *)subCells;
                            cellText.textColor = [UIColor redColor];
                        }
                    }
                }
            }
        }
    
    
        if ([subview isKindOfClass:[UIButton class]]) {
            UIButton *button = (UIButton *)subview;
            [button setTitleColor:[UIColor redColor] forState:UIControlStateSelected];
            if ([button.titleLabel.text isEqualToString:@"5"]) {
                button.selected = true;
                [button setBackgroundColor:[UIColor blueColor]];
            }
        }
     }
    }