Подключить void к действию? - PullRequest
0 голосов
/ 09 января 2012

Я только начал изучать цель-c, и одна вещь мне не ясна

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

- (void)startButtonPressed:(id)sender;

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

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

    - (void)startButtonPressed:(id)sender { 

//Some stuff in here

    }

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

Ответы [ 3 ]

2 голосов
/ 09 января 2012

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

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

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

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

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

1 голос
/ 09 января 2012

IBAction, на самом деле, это void

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

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

Это дано так, что вы не будете путать действия, поступающие из пользовательского интерфейса и функцийВаша реализация класса.

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

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

, что является правильным, а также

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

Тип в реализации, может быть void напрямую

1 голос
/ 09 января 2012

Интерфейсному строителю нужен метод, помеченный IBAction:

- (IBAction)startButtonPressed:(id)sender;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...