IBOutlet и IBAction

Какова цель использования IBAction и IBOutlet в кодировке Objective-C для iPhone, не имеет значения, если я их не использую?

151
29 окт. '09 в 14:15
источник поделиться
9 ответов

IBAction и IBOutlet - это макросы, определенные для обозначения переменных и методов, на которые можно ссылаться в Interface Builder.

IBAction разрешает void и IBOutlet ничего не разрешает, но они означают, что эти переменные и методы могут использоваться в построителе интерфейса для связывания элементов интерфейса с вашим кодом.

Если вы вообще не собираетесь использовать Interface Builder, вам это не нужно в коде, но если вы собираетесь его использовать, вам нужно указать IBAction для методов, которые будут используется в IB и IBOutlet для объектов, которые будут использоваться в IB.

202
29 окт. '09 в 14:22
источник

Традиционный способ отметить метод, чтобы он появился в Interface Builder, и вы можете перетащить к нему соединение, заключалось в том, чтобы метод возвращал тип IBAction. Однако, если вы сделаете свой метод недействительным, вместо этого (IBAction is # define'd будет недействительным) и укажите аргумент (id), метод все еще будет видимым. Это обеспечивает дополнительную гибкость, al

Все 3 из них видны из Interface Builder:

-(void) someMethod1:(id) sender; 
-(IBAction) someMethod2; 
-(IBAction) someMethod3:(id) sender;

Подробнее см. Руководство пользователя интерфейса Apple Interface Builder, в частности раздел "Интеграция с Xcode".

38
12 дек. '10 в 20:06
источник

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

Например, предположим, что вы определили кнопку и метку в IB. Чтобы динамически изменить значение метки, нажав кнопку, вы определите действие и свойство в своем приложении, подобное:

UILabel IBOutlet *myLabel;
-(IBAction) pushme;

Затем в IB вы должны подключить myLabel с меткой и подключить метод pushme с помощью кнопки. Вам нужны IBAction и IBOutlet, чтобы эти соединения существовали в IB.

31
29 окт. '09 в 14:19
источник

Интерфейс Builder использует их для определения того, какие члены и сообщения могут быть "подключены" к элементам управления интерфейсом, которые вы используете в своем окне/представлении.

IBOutlet и IBAction являются чисто маркерами, которые ищет интерфейс Builder, когда он анализирует ваш код во время разработки, они не влияют на код, сгенерированный компилятором.

5
29 окт. '09 в 14:31
источник

Перейдя на диаграмму, глядя на кодирование с ключом, подумал, что это может помочь кому-то. Это помогает понять, что такое IBOutlet.

Посмотрев на поток, можно увидеть, что IBOutlets существуют только для соответствия имени свойства с именем элемента управления в файле Nib.

Как загружается файл nib, снимок экрана онлайн-книги Мэтта для iOS6

4
18 апр. '16 в 21:58
источник

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

IBAction - специальный метод, запускаемый объектами пользовательского интерфейса. Интерфейсный Разработчик распознает их.

@interface Controller
{
  IBOutlet id textField; // links to TextField UI object
}

- (IBAction)doAction:(id)sender; // e.g. called when button pushed

Для получения дополнительной информации, пожалуйста, обратитесь Apple Docs

4
10 авг. '12 в 8:02
источник

IBAction и IBOutlets используются для подключения вашего интерфейса, выполненного в Interface Builder, с вашим контроллером. Если вы не будете использовать Interface Builder и полностью создадите свой интерфейс в коде, вы можете создать программу, не используя ее. Но на самом деле большинство из нас используют интерфейс Builder, как только вы захотите получить интерактивность в вашем интерфейсе, вам придется использовать IBActions и IBoutlets.

3
29 окт. '09 в 14:20
источник

когда вы используете Interface Builder, вы можете использовать Connections Inspector для настройки событий с обработчиками событий, обработчики событий должны быть функциями, которые имеют модификатор IBAction. Вид может быть связан с ссылкой для того же типа и с модификатором IBOutlet.

1
03 февр. '15 в 1:01
источник

IBOutlet

  • Это собственность.
  • Когда файл nib (IB) загружен, он становится частью инкапсулированных данных, которые подключаются к переменной экземпляра.
  • Каждое соединение разархивировано и восстановлено.

IBAction

  • Атрибут указывает, что метод является действием, к которому вы можете подключиться из раскадровки в Интерфейсном Разработчике.

@- Динамический шаблон IB - Интерфейсный Разработчик

0
17 янв. '19 в 16:07
источник

Посмотрите другие вопросы по меткам или Задайте вопрос