2014-02-17 2 views
1

Я искал онлайн для ответа, и каждое сообщение пропускает часть того, где на самом деле писать код для действия. У меня простая интерактивная UIButton. И если бы я мог просто увидеть шаблон кода, который говорит «\ write code for action here», это было бы очень полезно !!! (Это для IPad IOS7)Как добавить действие в UIButton

Это, насколько я могу получить ...

UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 
[button addTarget:self 
    action:@selector(aMethod:)forControlEvents:UIControlEventTouchDown]; 
[button setTitle:@"Show View" forState:UIControlStateNormal]; 
button.frame = CGRectMake(80.0, 210.0, 160.0, 40.0); 
[view addSubview:button]; 

Я думаю, я понимаю, что это, как создать потенциал действия, но там, где я пишу фактический код для самого действия?

ответ

1

Я хочу, чтобы отчасти расширить еще на то, что уже ответили здесь, Оба ответа верны, но я хочу объяснить, почему/как это все работает.

[button addTarget:self 
    action:@selector(aMethod:)forControlEvents:UIControlEventTouchDown]; 

Первое, что нужно посмотреть; target.

Цель - это экземпляр класса, любого класса. Единственным требованием для этого класса является то, что он должен реализовать action.

action - метод, который вы хотите вызвать, когда пользователь нажимает кнопку.

@selector(aMethod:) В принципе подумайте об этом как о методе. Поскольку Objective-c является динамическим языком, aMethod: не обязательно должен существовать, но он будет разбивать вашу программу, если это не так.

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

Система вызова метода action, на экземпляре target.

и для самого метода, он может выглядеть следующим образом

- (void) aMethod:(id)sender { } 
+0

спасибо! Это полезно, мне нужно предпринять дальнейшие шаги, чтобы объявить метод aMethod как метод? потому что я получаю ошибку "необъявленный indentifier 'aMethod'" –

+0

Нет, вы этого не делаете. не имеет в виду, что '@selector (aMethod:)' является совершенно другим методом, чем '@selector (aMethod)' , если это действительно точная копия и вставка из консоли отладки, я бы предложил удалить ': (id) selector' из вашего метода реализации. –

+0

Извините, я что-то упустил .. У меня нет «: (id) selector» в моем коде. Я потерял информацию о том, как исправить мою проблему с необъявленным идентификатором. заранее спасибо! Я новичок в этом –

0

Вы бы поместить код связанных действий в методе, в этом классе, названный aMethod:

- (void)aMethod:(id)sender { 
    // your code for the action goes here 
} 

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

+0

Спасибо! и я заимствовал «aMethod» из онлайн-форума, думая, что это то, что Xcode узнает. Теперь я знаю, что он создан пользователем, и я понимаю, что UIbutton вызывает метод. Что это значит для меня? Мне нужно создать метод в другом месте перед вызовом? могу ли я хранить все на одной странице кода? –

+0

Что для вас значит, так это то, что, как сказано в ответах, вам нужно написать свою собственную реализацию aMethod в том же файле .m, потому что вы установили цель UIButton для себя (что означает «этот экземпляр объекта») – Aaron

0

Поскольку вы установили цель как себя, метод aMethod: должен быть добавлен к тому же классу.

- (IBAction)aMethod:(id)sender 
{ 
    // do something here 
} 
Смежные вопросы