4 кнопки UIB, 1 способ изменить название? - PullRequest
0 голосов
/ 22 февраля 2012

У меня есть приложение, которое позволяет пользователям выбирать одну и только одну кнопку из четырех кнопок.кнопки привязаны к одному IBAction, который принимает идентификатор отправителя в качестве параметра.в то время как каждая кнопка имеет тег.Когда пользователь нажимает на любую кнопку, текст на этой кнопке изменяется на @"*" и проверяет другие кнопки, чтобы стереть любой предыдущий выбор.

Я использовал этот код.

selectedType = b.tag;
NSLog(@"%d", selectedType);



switch (selectedType) {
    case 1:
        [btn2 setTitle:@"" forState:UIControlStateNormal];
        [btn3 setTitle:@"" forState:UIControlStateNormal];
        [btn4 setTitle:@"" forState:UIControlStateNormal];
        break;

    case 2:
        [btn1 setTitle:@"" forState:UIControlStateNormal];
        [btn3 setTitle:@"" forState:UIControlStateNormal];
        [btn4 setTitle:@"" forState:UIControlStateNormal];
        break;

    case 3:
        [btn1 setTitle:@"" forState:UIControlStateNormal];
        [btn2 setTitle:@"" forState:UIControlStateNormal];
        [btn4 setTitle:@"" forState:UIControlStateNormal];
        break;

    case 4:
        [btn1 setTitle:@"" forState:UIControlStateNormal];
        [btn2 setTitle:@"" forState:UIControlStateNormal];
        [btn3 setTitle:@"" forState:UIControlStateNormal];
        break;
    default:
        break;
}

[b setTitle:@"*" forState:UIControlStateNormal];

Этоработает правильно прямо, но есть ли более простая техника?

Ответы [ 4 ]

3 голосов
/ 22 февраля 2012

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

[selectedButton setTitle:@"" forState:UIControlStateNormal]; // deselect the old button
self.selectedButton = sender; // update the selection
[selectedButton setTitle:@"*" forState:UIControlStateNormal]; // select the new button

Тот же подход по-прежнему жизнеспособен, если пользователю разрешено выбирать несколько кнопок, хотя вам необходимо сохранить ссылки на все выбранные кнопки.

1 голос
/ 22 февраля 2012

Сохранить кнопки в массиве с именем buttonsArray из NSArray type

for(UIButton *button  in buttonsArray ) {
    [button setTitle:@"" forState:UIControlStateNormal];
}
[b setTitle:@"*" forState:UIControlStateNormal];

Я не тестировалэто, но я думаю, что это должно работать.Я думаю, что подход Дэвида (David Rönnqvist) лучше.

0 голосов
/ 22 февраля 2012

Как насчет этого:

[btn1 setTitle:(1 == selectedType) ? [btn1 titleForState:UIControlStateNormal] : @"" forState:UIControlStateNormal];
[btn2 setTitle:(2 == selectedType) ? [btn2 titleForState:UIControlStateNormal] : @"" forState:UIControlStateNormal];
[btn3 setTitle:(3 == selectedType) ? [btn3 titleForState:UIControlStateNormal] : @"" forState:UIControlStateNormal];
[btn4 setTitle:(4 == selectedType) ? [btn4 titleForState:UIControlStateNormal] : @"" forState:UIControlStateNormal];
0 голосов
/ 22 февраля 2012

вы можете использовать NSClassFromString (className) для динамического создания ваших классов кнопок, которым вы можете установить их заголовки

или вы можете использовать коллекции IBOutlet, вы можете сослаться здесь для некоторых примеров

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