Change Text Color of Items in UIActionSheet - iOS 8
ios, ios8, uiactionsheet, uiactionsheetdelegate
Solution
There's an easy way if you still want to use `UIActionSheet` instead of `UIAlertController` in order to support older iOS versions.
`UIActionSheet` actually uses `UIAlertController` in iOS 8, and it has a private property `_alertController`.
SEL selector = NSSelectorFromString(@"_alertController");
if ([actionSheet respondsToSelector:selector])
{
UIAlertController *alertController = [actionSheet valueForKey:@"_alertController"];
if ([alertController isKindOfClass:[UIAlertController class]])
{
alertController.view.tintColor = [UIColor blueColor];
}
}
else
{
// use other methods for iOS 7 or older.
}
For Swift Below code should works
let alertAction = UIAlertAction(title: "XXX", style: .default) { (action) in
}
alertAction.setValue(UIColor.red, forKey: "titleTextColor")
Problem
I had been using following code to change text color of items which I add in `UIActionSheet`.: ``` - (void)willPresentActionSheet:(UIActionSheet *)actionSheet { for (UIView *subview in actionSheet.subviews) { if ([subview isKindOfClass:[UIButton class]]) { UIButton *button = (UIButton *)subview; [button setTitleColor:[UIColor blackColor] forState:UIControlStateNormal]; } } } ``` It works fine in `iOS7`, but in `iOS8` the above code doesn't change the text color of items. Now my question is how to change the text color of items which I add in `UIActionSheet` using `iOS8`?? Additional Info: I added breakpoint to see whether following lines from the above code get executed or not: ``` UIButton *button = (UIButton *)subview; [button setTitleColor:[UIColor blackColor] forState:UIControlStateNormal]; ``` These lines do not get executed. So, `if([subview isKindOfClass:[UIButton class]])` is always `false` for all items of `actionSheet.subviews`. So what I think is that the view heirarchy of `UIActionSheet` has been changed.