2014-06-10 3 views
0

Я пытаюсь изменить цвет кнопки в моем UIActionSheet. Проблема (действительно странная проблема) заключается в том, что если ориентация устройства Пейзаж, цвет кнопки не меняется! Некоторые скриншот: Portrait LandscapeЦель C UIActionSheet пользовательский цвет кнопки

Я не могу понять, почему!

Вот код:

- (void)willPresentActionSheet:(UIActionSheet *)actionSheet 
{ 
[actionSheet.subviews enumerateObjectsUsingBlock:^(id _currentView, NSUInteger idx, BOOL *stop) { 
    if ([_currentView isKindOfClass:[UIButton class]]) { 
     [((UIButton *)_currentView).titleLabel setTextColor:[[MSAppDelegate sharedInstance] defaultColor]]; 
    } 
}]; 
/* 
for (UIView *subview in actionSheet.subviews) { 
    if ([subview isKindOfClass:[UIButton class]]) { 
     UIButton *button = (UIButton *)subview; 
     [button setTitleColor:[[MSAppDelegate sharedInstance] defaultColor] forState:UIControlStateNormal]; 
     [button setTitleColor:[[MSAppDelegate sharedInstance] defaultColor] forState:UIControlStateSelected]; 
    } 
    if ([subview isKindOfClass:[UILabel class]]) { 
     UILabel *label = (UILabel *)subview; 
     label.textColor = [[MSAppDelegate sharedInstance] defaultColor]; 
    } 
} 
*/ 
} 

Я также попытался комментируемой код, оба работают в портретном, но не в ландшафтном!

Кстати, в Пейзаже и в портрете код выполнен!

Если вы хотите увидеть весь код вот link

Спасибо заранее!

+1

это перестанет работать, как скоро вам придется прокручивать ваши варианты. В этот момент все параметры будут представлены в UItableView. –

+0

Вы ошибаетесь, это работает так, как должно быть! Это не проблема! –

+0

очевидно, что это не так, либо вам не нужно было спрашивать, как его решить. В ландшафте ActionSheet представляет свои кнопки в TableView, в Portrait not. Поэтому ваш подход работает в портрете, но не в ландшафте. –

ответ

4

Вы могли наследоваться UIActionSheet класс и реализовать tableView:willDisplayCell:forRowAtIndexPath: селектор:

@interface MSActionSheet : UIActionSheet 
@end 

@implementation MSActionSheet 

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath { 
    [[cell subviews] enumerateObjectsUsingBlock:^(id v, NSUInteger idx, BOOL *stop) { 
     [[v subviews] enumerateObjectsUsingBlock:^(id v2, NSUInteger idx, BOOL *stop) { 
      if ([v2 isKindOfClass:[UILabel class]]) { 
       [(UILabel *)v2 setTextColor:[[MSAppDelegate sharedInstance] defaultColor]]; 
      } 
     }]; 
    }]; 
} 

@end 
+0

Благодарим за ответ, я попробую, как только смогу, но отладка subview была экземпляром UIActionSheetButton, а не UITableViewCell! –

1

использовать этот метод, чтобы установить кнопку цвет заголовка, то я уверен, что ваша проблема будет решить

[[[actionSheet valueForKey:@"_buttons"] objectAtIndex:0] setTitleColor:[[MSAppDelegate sharedInstance] defaultColor] forState:UIControlStateNormal]; 
+0

Ни то, ни другое не работает в ландшафте! –

+0

работает для меня ... как насчет цвета фона кнопки отмены, свойство backgroundcolor меняет цвет, но не правильно –

Смежные вопросы