Я написал метод, чтобы изменить шрифт для всех элементов управления в ViewController. Метод получает корневой вид viewcontroller и рекурсивно итерации по всем представлениям для изменения шрифта. Чтобы узнать стиль текста, который должен применяться к тексту, я установил код из Interface Builder в свойство тега для каждого элемента управления. Все работает отлично, за исключением экземпляров UIButton. UIButtons не имеет IBOutlet, потому что мне не нужны какие-либо явные ссылки на них в коде. Проблема заключается в мой контроллер не может получить значение тега с помощью кнопки:IOS приложение: UIButton тег не доступен в коде контроллера
int viewTag = [view tag];
Это не всегда 0, независимо от того, что я установить в Interface Builder. Зачем?
Вот фрагмент кода, кода я использую:
FontManager класс
+ (void)setCustomFontToView:(UIView *)view {
if ([view isKindOfClass:[UILabel class]] &&
[view respondsToSelector:@selector(setFont:)] ) {
int viewTag = [view tag];
UIFont *font = nil;
if (viewTag == 1) {
font = [UIFont fontWithName:@"Frutiger-Light" size:18];
} else if (viewTag == 2) {
font = [UIFont fontWithName:@"Frutiger-Bold" size:20];
}
[(UILabel *) view setFont:font];
}
NSArray *childViews = [view subviews];
if ([childViews count] > 0) {
for (UIView *childView in childViews) {
[self setCustomFontToView:childView];
}
}
}
ViewController
- (void)viewDidLoad
{
.....
[FontManager setCustomFontToView:self.view];
}
Из любопытства, вы попробуйте добавить 'IBOutlet' для него? – dasblinkenlight
Вы сказали, что не сделали IBOutlet к кнопке, так что такое myButton? – rdelmar
@ dasblinkenlight Цель автоматизации процесса заключается в том, чтобы избежать необходимости создавать IBOutlet для каждого элемента управления: $. @ \t rdelmar видеть мое редактирование (извините за ошибки) –