та же кнопка выполняет несколько функций с помощью селекторов и обновляет текст кнопки в iOS, цель C - PullRequest
0 голосов
/ 08 февраля 2011

Как заставить одну и ту же кнопку выполнять более 1 функции в зависимости от определенных условий и соответственно изменять текст на кнопке? Как вы делаете это с помощью селекторов?

Ответы [ 3 ]

5 голосов
/ 08 февраля 2011

Полагаю, вы хотите изменить метод вызова состояния кнопки или другого элемента управления ...

-(IBAction)buttonClicked:(id)sender {
    if ( someState ) {
        [someObject doSomething];
    }
    else if (someOtherState) {
        [someObject doSomethingElse];
    }
}

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

0 голосов
/ 09 мая 2011

Вы можете получить заголовок по свойству кнопки currentTitle.См .: https://developer.apple.com/library/ios/#documentation/UIKit/Reference/UIButton_Class/UIButton/UIButton.html

Более чистым способом кодирования, IMHO, было бы иметь переменную, которая сообщает вам, находитесь ли вы в режиме PLAYING - используйте это, тогда ваш код не сломается, если вы решитеизменить текст кнопкиФактически, вы не захотите искать разные текстовые значения, если локализуетесь для разных языков.

Тогда вы можете менять свою переменную И свою метку кнопки при переходе от воспроизведения к паузе и т. Д.

0 голосов
/ 08 февраля 2011

Вы можете добавить столько действий для кнопки для данного события, сколько пожелаете.

Вызов addTarget:action:forControlEvents: для каждого селектора, который должен быть запущен для события.

UIButton *aButton = [[UIButton alloc] initWithFrame:CGRectZero];

[aButton addTarget:self action:@selector(firstMethod) forControlEvents:UIControlEventTouchUpInside];
[aButton addTarget:self action:@selector(secondMethod) forControlEvents:UIControlEventTouchUpInside];
...