2012-01-08 6 views
0

Я только начал изучать цель-c, и одна вещь для меня непонятнаПодключить void к действию?

Хорошо, у меня есть кнопка в InterFace Builder. Я мой файл .h у меня есть код;

- (void)startButtonPressed:(id)sender; 

Как я могу 'link' в 'void' моей кнопки, чтобы сделать действие?

Код здесь не работает, как мне это нужно?

- (void)startButtonPressed:(id)sender { 

//Some stuff in here 

    } 

Кто-нибудь знает, как исправить эту проблему?

ответ

1

IBAction, по сути, является void

http://www.cocoadev.com/index.pl?IBAction

// from <AppKit/NSNibDeclarations.h> 
#ifndef IBAction 
    #define IBAction void 
#endif 

Дано так, вы не испортите действия исходя из пользовательского интерфейса и функций вашей реализации класса.

Чтобы создать функцию соединяемый с UI, вам необходимо установить его тип IBAction

// .h 
- (IBAction)startButtonPressed:(id)sender; 
// .m 
- (IBAction)startButtonPressed:(id)sender { 
    //Some stuff in here 
} 

которая coorect, а также

// .m 
- (void)startButtonPressed:(id)sender { 
    //Some stuff in here 
} 

типа в реализации, может быть void непосредственно

+0

Я сделал; '- (IBAction) startButtonPressed: (id) отправитель; но я не могу подключить кнопку к действию? в интерфейсе Builder? – Blazer

+0

означает, что вы видите действие в IB и не можете подключиться, или вы даже не видите его? –

1

Interface Builder необходим метод маркированный IBAction:

- (IBAction)startButtonPressed:(id)sender; 
+0

Интерфейс Builder требует, чтобы интерфейс был помечен как 'IBAction', а не реализация. –

+0

@JasonCoco благодарит за исправление. Обычно я отмечаю оба - я не знал, что пометки только «.h» были достаточными. – dasblinkenlight

+0

Джейсон. - это уже неправда .... – bbum

2

изменения возвращаемого значения в заголовке файла (файл .h) в IBAction вместо void. Таким образом, они будут выглядеть следующим образом:

// .h header file 
- (IBAction)startButtonPressed:(id)sender; 

// .m implementation file 
- (void)startButtonPressed:(id)sender { /* do some work */ } 

IBAction типа точно так же с компилятором как void. Он используется интерфейсом Builder, который анализирует файл заголовка, чтобы увидеть, что он может связать. Когда вы устанавливаете тип возвращаемого значения на IBAction, вы сообщаете разработчику интерфейса, что действие может быть связано с реализацией этого метода (и теперь вы сможете нарисовать соединение в IB).

Поскольку void и IBAction - это то же самое, вы можете использовать IBAction в вашем файле реализации, а также для типа возврата, хотя это обычно не делается. Кроме того, поскольку IBAction и void являются одинаковыми, вы можете создавать действия, которые не возвращают никакого значения (то есть возврат метода действия должен быть void).

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