IBOutlet и IBAction



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

661   8  

8 ответов:

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

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

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

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

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

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

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

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

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

UILabel IBOutlet *myLabel;
-(IBAction) pushme;

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

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

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

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

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

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

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

дополнительную информацию см. Apple Docs

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

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

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

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

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

Comments

    Ничего не найдено.