Подсветка кнопки с тегом отправителя - PullRequest
0 голосов
/ 22 сентября 2018

У меня на раскадровке 7 кнопок, я назначил номер тега каждой кнопке.И все кнопки подключены к одному IBAction.

В моем методе действия у меня есть оператор switch, такой как switch ([sender tag]), который выполняет соответствующее действие в соответствии с тегом.Это все работает.Но я хочу добавить функциональность, где выделенная кнопка выделена, а остальные находятся в нормальном состоянии.

Ответы [ 2 ]

0 голосов
/ 23 сентября 2018

Вы можете создать свойство с тегами:

@property (nonatomic, strong) NSArray *tags;

Где-нибудь (например, в viewDidLoad) инициализировать его значениями, используемыми в раскадровке:

tags = @[@1, @2, @3, @4, @5]

И выбирать кнопки с помощью этих тегов

- (IBAction)buttonPressed:(UIButton *)sender {
    for (int i = 0; i < tags.count; i++) {
        UIButton *button = [self.view viewWithTag:tags[i]];
        button.selected = (button.tag == sender.tag);
    }
}

Или вы можете создавать IBOutlets для каждых 7 кнопок и создавать для них массив.

array = @[outlet1, ..., outlet7]

И выбирать кнопки с помощью розеток

- (IBAction)buttonPressed:(UIButton *)sender {
    for (int i = 0; i < array.count; i++) {
        UIButton *button = array[i];
        button.selected = (button.tag == sender.tag);
    }
}
0 голосов
/ 22 сентября 2018

Надеюсь, что это может дать вам некоторое представление:

- (void)setupButtons {
    for (int i = 0; i < 7; i++) {
        CGFloat width = self.view.frame.size.width / 7;
        UIButton *button = [[UIButton alloc] initWithFrame:CGRectMake(i * width, 100, width, 30)];
        [self.view addSubview:button];
        button.tag = 1000 + i;
        [button setTitle:[NSString stringWithFormat:@"%d", i] forState:UIControlStateNormal];
        button.backgroundColor = [UIColor redColor];
        [button setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
        [button setTitleColor:[UIColor whiteColor] forState:UIControlStateSelected];
        [button addTarget:self action:@selector(buttonClicked:) forControlEvents:UIControlEventTouchDown];
        if (i == 0) {
            // default first button selected
            button.selected = YES;
        }
    }
}

- (void)buttonClicked:(UIButton *)sender {
    for (int i = 0; i < 7; i++) {
        UIButton *button = [self.view viewWithTag:(1000+i)];
        button.selected = (button.tag == sender.tag);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...