2010-03-23 2 views
-1

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

Это код кнопки:

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) СПАСИБО!

+1

В чем проблема? Непризнанный селектор или что-то еще? –

+0

С каких это пор UIButton имеет метод 'value'? – Chuck

+0

Я также подозреваю непризнанный селектор. Что вы ожидаете вернуть [значение отправителя]? Насколько я знаю, UIButton не имеет такого имени. –

ответ

2

Как указывали другие, UIButton не имеет свойства value. Наверное, вы пытаетесь определить, какая кнопка была нажата. Есть два способа сделать это:

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

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

+0

Awesome, спасибо! – StealthRT

+0

Это повторение того, что я написал ... –

+0

@Shaggy Frog: Думаю, мы написали это в одно и то же время, иногда –

0

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

0
- (void)buttonPressedAction:(id)sender 
{ 
    UIButton* button = (UIButton*)sender; 
    // do something 
} 

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

+0

Удивительный, спасибо! Я добавил код от Mads Mobaek к этому, и он отлично работает: o) – StealthRT

Смежные вопросы