Эта же кнопка должна выполнять несколько задач - PullRequest
1 голос
/ 27 марта 2011

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

Есть ли способ сделать это?

Спасибо,

Ответы [ 4 ]

2 голосов
/ 27 марта 2011

Вы можете использовать свойство tag кнопки; так внутри вашего метода IBAction.

-(void)buttonClicked:(id)sender{
    UIButton *button = (UIButton *)sender;
    if (button.tag == 1) {
        // perform your required functionality
        button.tag = 2;
    }
    else if (button.tag == 2) {
        // perform your required functionality
        button.tag = 3;
    }
    else if (button.tag == 3) {
        // perform your required functionality
        button.tag = 1;
    }
}

И не забудьте установить начальное значение тега в 1.

2 голосов
/ 27 марта 2011

Добавить дополнительный UIGestureRecognizer;) Одно касание - это действие, которое будет связано, но вы можете добавить другие виды жестов, такие как двойное касание, пролистывание и т. Д.

1 голос
/ 27 марта 2011

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

Итак, для первого действия:

[button addTarget:self action:@selector(method1:) forControlEvents:UIControlEventTouchUpInside];

- (void) method1
{
//set button to handle method 2
[button addTarget:self action:@selector(method2:) forControlEvents:UIControlEventTouchUpInside];
}

- (void) method 2
{

}
0 голосов
/ 27 марта 2011

Кнопка просто вызывает метод в вашем контроллере вида при нажатии. Оттуда вы делаете что-то вроде этого:

if (internalState == FOO) {
  [self doA];
} else {
  [self doB];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...