IOS несколько кнопок UIB для использования одного обработчика (через IB) - PullRequest
2 голосов
/ 07 декабря 2011

Есть ли способ, чтобы все UIButton в представлении использовали один и тот же обработчик Touch Up Inside?Или, возможно, установите все кнопки для одного и того же делегата, используя Interface Builder?

Ответы [ 4 ]

4 голосов
/ 07 декабря 2011

Да.Control перетащите первую кнопку в заголовочный файл, как обычно, и создайте действие.Затем в файле .xib подключите все остальные кнопки к владельцу файла и выберите то же действие, которое вы только что создали.

В файле .xib посмотрите инспектор атрибутов на панели просмотра.Вы можете установить тег для каждой кнопки в отдельности.Тогда вы можете использовать следующий код ...

- (IBAction)myButtons:(id)sender {

    switch ([(UIButton *)sender tag]) {
        case 0:
            // code for first button
            break;

        case 1:
            // code for second button
            break;

        case 2:
            // code for third button
            break;

        default:
            break;
    }
}
2 голосов
/ 07 декабря 2011

Нет проблем с тем же IBAction, что и цель / действие из нескольких кнопок. Просто свяжите несколько в IB

Программный эквивалент:

[button1 addTarget:self action:@selector(oneAction:) forControlEvents:UIControlEventTouchUpInside];

[button2 addTarget:self action:@selector(oneAction:) forControlEvents:UIControlEventTouchUpInside];
2 голосов
/ 07 декабря 2011

Да, вы можете прикрепить один и тот же IBAction к любому количеству событий кнопки, сколько захотите. Фактическая кнопка, которая инициировала действие, будет передана в качестве аргумента IBAction, и вы можете различать ее там (если вам нужно).

1 голос
/ 07 декабря 2011

Конечно, почему бы и нет?Просто перетащите с каждой кнопки один и тот же метод IBAction в своем коде.Однако тогда этот метод должен состоять из массивного оператора if, чтобы определить, какая это кнопка и что он должен делать в ответ, поскольку вы, конечно, не хотите, чтобы все эти кнопки делали одно и то же.

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