IBOutlet и IBAction
Какова цель использования IBAction и IBOutlet в кодировании Objective-C для iPhone, не имеет значения, если я их не использую?
- objective c - Обнаруживать, когда пользователь меняет настройки уведомлений приложения
- Когда я должен использовать @synthesize явно?
- NSObject + load и + initialize - Что они делают?
- Есть ли причина объявлять ivars, если вы используете свойства исключительно в Objective-C?
- Тип DATETIME объекта Objective-C и sqlite
- Разница iPhone SDK между isKindOfClass и isMemberOfClass
- Сделать пользовательский class Serializable в Objective-c / iPhone?
- NSFetchRequest и predicateWithBlock
IBAction
и IBOutlet
– это macros, определенные для обозначения переменных и методов, на которые можно ссылаться в Interface Builder.
IBAction
устраняет void
а IBOutlet
ничего не разрешает, но они означают, что эти переменные и методы могут использоваться в построителе интерфейса для связывания элементов интерфейса с вашим кодом.
Если вы вообще не собираетесь использовать Interface Builder, вам не нужны они в вашем коде, но если вы собираетесь его использовать, вам нужно указать IBAction
для методов, которые будут использоваться в IB и IBOutlet
для объектов, которые будут использоваться в IB.
Традиционный способ отметить метод, чтобы он появился в Interface Builder, и вы можете перетащить на него соединение, заключалось в том, чтобы метод возвращал тип IBAction. Однако, если вы сделаете свой метод недействительным, вместо этого (IBAction is # define’d будет недействительным) и укажите аргумент (id), метод все еще будет видимым. Это обеспечивает дополнительную гибкость,
Все 3 из них видны из Interface Builder:
-(void) someMethod1:(id) sender; -(IBAction) someMethod2; -(IBAction) someMethod3:(id) sender;
Подробные сведения см. В руководстве пользователя Apple Builder. В частности, раздел «Интеграция Xcode».
Вам нужно использовать IBOutlet и IBAction, если вы используете конструктор интерфейса (следовательно, префикс IB) для ваших компонентов графического интерфейса. IBOutlet необходим для связывания свойств в вашем приложении с компонентами в IB, а IBAction используется, чтобы ваши методы могли быть связаны с действиями в IB.
Например, предположим, что вы определили кнопку и метку в IB. Чтобы динамически изменить значение метки, нажав кнопку, вы определите действие и свойство в своем приложении, подобное:
UILabel IBOutlet *myLabel; -(IBAction) pushme;
Затем в IB вы подключите myLabel с меткой и подключите метод pushme с помощью кнопки. Вам нужны IBAction и IBOutlet, чтобы эти соединения существовали в IB.
Интерфейс Builder использует их для определения того, какие члены и сообщения могут быть «подключены» к элементам управления интерфейсом, которые вы используете в своем окне / представлении.
IBOutlet и IBAction являются чисто маркерами, которые ищет интерфейс Builder, когда он анализирует ваш код во время разработки, они не влияют на код, сгенерированный компилятором.
IBAction и IBOutlets используются для подключения вашего интерфейса, выполненного в Interface Builder, с вашим controllerом. Если вы не будете использовать Interface Builder и полностью создадите свой интерфейс в коде, вы можете создать программу, не используя ее. Но на самом деле большинство из нас используют интерфейс Builder, как только вы захотите получить интерактивность в вашем интерфейсе, вам придется использовать IBActions и IBoutlets.
Outlet – это ссылка от кода к пользовательскому интерфейсу. Если вы хотите показать или скрыть элемент пользовательского интерфейса, если вы хотите получить текст текстового поля или включить или отключить элемент (или сто других вещей), вам необходимо определить выход этого объекта в источниках и связать его с выходом через «объект интерфейса» к элементу пользовательского интерфейса. После этого вы можете использовать выход так же, как и любую другую переменную в вашей кодировке.
IBAction – специальный метод, инициируемый объектами пользовательского интерфейса. Interface Builder распознает их.
@interface Controller { IBOutlet id textField; // links to TextField UI object } - (IBAction)doAction:(id)sender; // eg called when button pushed
За дополнительной информацией обращайтесь к Apple Docs
Выйдя на диаграмму, глядя на кодирование с ключом, подумал, что это может помочь кому-то. Это помогает понять, что такое IBOutlet.
Посмотрев на stream, можно увидеть, что IBOutlets только там, чтобы соответствовать имени свойства с управляющим именем в файле Nib.
когда вы используете Interface Builder, вы можете использовать Connections Inspector для настройки событий с обработчиками событий, обработчики событий должны быть функциями, которые имеют модификатор IBAction. Вид может быть связан с ссылкой для того же типа и с модификатором IBOutlet.