Помогите с нажатой кнопкой iphone - PullRequest
0 голосов
/ 24 марта 2010

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

Это код для кнопок:

UIButton *button = [[UIButton alloc] initWithFrame:CGRectMake(270, 423, 60, 60)];
[button addTarget:self action:@selector(buttonPressedAction:) 
    forControlEvents:UIControlEventTouchUpInside];
[button setBackgroundImage:[[UIImage imageNamed:@"refreshicon.png"] 
    stretchableImageWithLeftCapWidth:10.0 topCapHeight:0.0] 
    forState:UIControlStateNormal];
button.tag = 1;

UIButton *button2 = [[UIButton alloc] initWithFrame:CGRectMake(0, 423, 60, 60)];
[button2 addTarget:self action:@selector(buttonPressedAction:) 
    forControlEvents:UIControlEventTouchUpInside];
[button2 setBackgroundImage:[[UIImage imageNamed:@"login.png"] 
    stretchableImageWithLeftCapWidth:10.0 topCapHeight:0.0] 
    forState:UIControlStateNormal];
button2.tag = 2;

[self.navigationController.view addSubview:button];
[self.navigationController.view addSubview:button2];

А вот как я называю buttonPressedAction:

- (void)buttonPressedAction:(id)sender
{
 UIButton* button = (UIButton*)sender;

if(button.tag == 1)
{
     NSLog(@"1");
}else 
{
     NSLog(@"2");
}
}

Но когда я использую NSLog, чтобы увидеть значение отправителя, он падает.

Любой совет, что происходит и как это исправить?

Теперь исправлено: o) СПАСИБО!

Ответы [ 3 ]

2 голосов
/ 24 марта 2010

Как уже отмечалось, UIButton не имеет свойства value. Я думаю, вы пытаетесь определить, какая кнопка была нажата. Вот два способа сделать это:

  1. Используйте свойство tag по одной на каждую кнопку. То есть button1.tag = 1, button2.tag = 2. Затем можно проверить, какая кнопка была нажата с помощью if(sender.tag == 1) и т. д. Вы можете ввести константы для чисел, чтобы сделать код более читабельным.

  2. Если вы сохраняете ссылку на кнопку, вы можете проверить, равна ли ссылка. Пример: if(sender == self.button1)

0 голосов
/ 24 марта 2010
- (void)buttonPressedAction:(id)sender
{
    UIButton* button = (UIButton*)sender;
    // do something
}

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

0 голосов
/ 24 марта 2010

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

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