it-swarm.com.ru

IBOutlet и IBAction

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

151
suse

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

IBAction преобразуется в void, а IBOutlet ничего не разрешает, но они означают для Xcode и Interface Builder, что эти переменные и методы можно использовать в Interface Builder для связи элементов UI с вашим кодом.

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

202
Jasarien

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

Все 3 из них видны из Интерфейсного Разработчика:

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

См. Руководство пользователя Интерфейсного Разработчика Apple для деталей, особенно раздел, озаглавленный Интеграция XCode.

38
Michael Rogers

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

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

UILabel IBOutlet *myLabel;
-(IBAction) pushme;

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

31
ennuikiller

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

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

5
KazR

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
पवन

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

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

 How nib file is loaded, screenshot of Matt's online book for iOS6

4
NSCoder

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

3
Yannick Compernol

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

1
Zephyr

IBOutlet

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

IBAction 

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

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

0
Vinoth Anandan