Вопрос

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

Это было полезно?

Решение

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

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

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

Другие советы

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

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

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

Подробнее см. в Руководстве пользователя Apple Interface Builder, особенно в разделе, озаглавленном «Интеграция XCode».

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

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

UILabel IBOutlet *myLabel;
-(IBAction) pushme;

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

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

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

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

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

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

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

Для получения дополнительной информации см. Документы Apple.

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

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

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

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

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

Пакетик IBOutlet

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

Действие

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

@ - Динамический шаблон IB - конструктор интерфейсов

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top