Подключение кнопок, которые добавляются с помощью интерфейса Builder с использованием кода - для начинающих - PullRequest
0 голосов
/ 03 апреля 2012

Я создал 4 кнопки через Interface Builder.У меня есть массив, в котором хранится следующее содержимое

"A"
"B"
"B"
"A"

Теперь мне нужно прочитать array строк и нарисовать кнопку Yellow или Red.Если строка A, тогда кнопка должна быть Yellow, а если символ строки B, то кнопка должна быть Red.

Мой код на данный момент;

for (NSString* content in arr) {
           if ([content isEqualToString:@"A"]){
               // Make the (1st/there after) button in the interface builder to Yellow and etc 
           }else {
// Make the 1st button in the interface builder to Redand etc
}
       }

Ответы [ 3 ]

1 голос
/ 03 апреля 2012

Вы должны пометить кнопки в IB или создать для них розетки в подклассе.Затем вы можете ссылаться на них по этим тегам или выходам.

После создания всех выходов вы можете сохранить ссылки в переменной-члене, содержащей выходы.Тогда достаточно просто установить цвет фона на правильное значение на основе строки.

1 голос
/ 03 апреля 2012

Во-первых, в Интерфейсном Разработчике (IB) вам необходимо назначить теги для каждой кнопки, которую вы хотите изменить, чтобы вы могли получить их позже. Установите для первого тега кнопки значение 0, для второго - 1 и т. Д.

Тогда ваш код будет выглядеть примерно так:

for (NSUInteger i = 0; i < 4; i++) {
    UIButton *button = (UIButton *)[self.view viewWithTag:i];
    if ([(NSString *)[arr objectAtIndex:i] isEqualToString:@"A"]) {
        [button setBackgroundColor:[UIColor yellowColor]];
    } else {
        [button setBackgroundColor:[UIColor redColor]];
    }
}
0 голосов
/ 03 апреля 2012

На самом деле вы можете использовать tag свойство UIButton. Предположим, ваши теги кнопок будут 1, 2, 3, 4. Итак:

NSArray *array = [NSArray arrayWithObjects:@"A", @"B", @"B", @"A", nil];
for (int i = 0; i < 4; i++) {
    UIView *view = [self.view viewWithTag:i + 1];
    if ([[array objectAtIndex:i] isEqualToString:@"A"])
        view.backgroundColor = [UIColor yellowColor];
    else if ([[array objectAtIndex:i] isEqualToString:@"B"])
        view.backgroundColor = [UIColor redColor];
}

Кроме того, я бы не советовал вам использовать IB, особенно в начале. Напишите код самостоятельно. Этот код может содержать синтаксические или логические ошибки (я написал это в блокноте):

@interface ViewController : UIViewController
@end

//

@implementation ViewController

- (void)loadView {
    self.view = [[UIView alloc] initWithFrame:[[UIScreen mainScreen] applicationFrame]];
    self.view.backgroundColor = [UIColor whiteColor];

    NSArray *array = [NSArray arrayWithObjects:@"A", @"B", @"B", @"A", nil];
    CGFloat offset = 5.0f, step = self.view.frame.size.width / [array count];
    for (NSString *string in array) {
        UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
        button.frame = CGRectMake(offset, 5, step - 10, 50);
        offset += step;

        if ([string isEqualToString:@"A"])
            button.backgroundColor = [UIColor yellowColor];
        else if ([string isEqualToString:@"B"])
            button.backgroundColor = [UIColor redColor];

        [self.view addSubview:button];
    }
}

@end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...