Цикл по объектам в Objective-C - PullRequest
0 голосов
/ 13 февраля 2012

У меня есть число UIButton с, и я устанавливаю на них пользовательский шрифт программно, например:

Button1.titleLabel.font = [UIFont fontWithName:@"myCustomFont" size:16];
Button2.titleLabel.font = [UIFont fontWithName:@"myCustomFont" size:16];
Button3.titleLabel.font = [UIFont fontWithName:@"myCustomFont" size:16];
Button4.titleLabel.font = [UIFont fontWithName:@"myCustomFont" size:16];
Button5.titleLabel.font = [UIFont fontWithName:@"myCustomFont" size:16];
Button6.titleLabel.font = [UIFont fontWithName:@"myCustomFont" size:16];

Этот код верный и работает, но он не выглядит как самый простой способ написания. Есть ли способ пройти через эти элементы вместо этого?

Я представлял себе что-то вроде этого:

for (int i = 1; i <= 5; i++) {
    Button(i).titleLabel.font = etc.. // How would I get the value of 'i'?
}

Или это просто плохая идея?

Ответы [ 4 ]

5 голосов
/ 13 февраля 2012

Вы можете использовать NSArray для перебора:

UIFont *font = [UIFont fontWithName:@"myCustomFont" size:16];
NSArray *buttons = [NSArray arrayWithObjects: Button1, Button2, Button3, 
                                              Button4, Button5, Button6, 
                                              nil];
for (UIButton *button in buttons) {
  button.titleLabel.font = font;
}
2 голосов
/ 13 февраля 2012

вы можете сделать так:

NSMutableArray *buttons = [NSMutableArray array];
[buttons addObject: Button1];
[buttons addObject: Button2];
[buttons addObject: Button3];
[buttons addObject: Button4];
[buttons addObject: Button5];
[buttons addObject: Button6];

for (UIButton *button in buttons) {
    button.titleLabel.font = [UIFont fontWithName:@"myCustomFont" size:16];
}

или

for (int i=1;i<7;i++) {
    SEL selector = selectorFromString([NSString stringWithFormat:@"Button%d", i]);
    UIButton *button = [self performSelector:selector];
    button.titleLabel.font = [UIFont fontWithName:@"myCustomFont" size:16];
}
1 голос
/ 13 февраля 2012

Ну, я думаю, вы можете поместить все свои кнопки в массив, а затем быстро перечислить его.


NSArray *buttons; 
//Put all of your buttons inhere
for (UIButton *button in buttons)
{
    button.titleLabel.font = [UIFont fontWithName:@"myCustomFont" size:16];
}

0 голосов
/ 21 марта 2014

Как насчет этого? currentView - это UIView, в котором есть все кнопки.

NSArray* buttonsArray = currentView.subviews;

for((UIButton*) button in buttonsArray)
{
     button.titleLabel.font = [UIFont fontWithName:@"myCustomFont" size:16];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...