iphone objective-c interface-builder ibaction iboutlet

iphone - IBOutlet e IBAction



ibaction swift (8)

Cuando utiliza el Interface Builder, puede usar Connections Inspector para configurar los eventos con los manejadores de eventos, se supone que los manejadores de eventos son las funciones que tienen el modificador IBAction. Una vista se puede vincular con la referencia para el mismo tipo y con el modificador IBOutlet.

¿Cuál es el propósito de utilizar IBAction e IBOutlet en la codificación de Objective-C para el iPhone, ¿hay alguna diferencia si no los uso?


IBAction e IBOutlets se utilizan para conectar su interfaz creada en Interface Builder con su controlador. Si no usa Interface Builder y construye su interfaz completamente en código, podría crear un programa sin usarlo. Pero en realidad, la mayoría de nosotros usamos el Interface Builder, una vez que desee obtener algo de interactividad en su interfaz, deberá usar IBActions y IBoutlets.


Interface Builder los usa para determinar qué miembros y mensajes pueden ''conectarse'' a los controles de interfaz que está utilizando en su ventana / vista.

IBOutlet e IBAction son puramente como marcadores que Interface Builder busca cuando analiza el código en tiempo de diseño, no tienen ningún efecto en el código generado por el compilador.


La forma tradicional de marcar un método para que aparezca en Interface Builder, y puede arrastrar una conexión a él, ha sido hacer que el método devuelva el tipo IBAction. Sin embargo, si hace que su método sea nulo, en su lugar (IBAction es # define''d para ser nulo), y proporciona un argumento (id), el método aún es visible. Esto proporciona flexibilidad adicional, al

Los 3 de estos son visibles desde Interface Builder:

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

Consulte la Guía del usuario del compilador de interfaces de Apple para obtener más información, especialmente la sección titulada Integración de Xcode.


Necesita usar IBOutlet e IBAction si está utilizando el constructor de interfaz (de ahí el prefijo IB) para sus componentes de GUI. IBOutlet es necesario para asociar propiedades en su aplicación con componentes en IB, e IBAction se utiliza para permitir que sus métodos se asocien con acciones en IB.

Por ejemplo, supongamos que define un botón y una etiqueta en IB. Para cambiar dinámicamente el valor de la etiqueta presionando el botón, definirá una acción y propiedad en su aplicación similar a:

UILabel IBOutlet *myLabel; -(IBAction) pushme;

Luego, en IB, debe conectar myLabel con la etiqueta y conectar el método pushme con el botón. Necesita IBAction e IBOutlet para que estas conexiones existan en IB.


Se encontró con el diagrama mientras miraba la codificación de valores-clave, pensó que podría ayudar a alguien. Ayuda a comprender qué es IBOutlet.

Al observar el flujo, se puede ver que IBOutlets solo están ahí para hacer coincidir el nombre de la propiedad con un nombre de control en el archivo Nib.


Un Outlet es un enlace de código a UI. Si desea mostrar u ocultar un elemento UI, si desea obtener el texto de un campo de texto o habilitar o deshabilitar un elemento (u otras cien cosas), debe definir una salida de ese objeto en las fuentes y vincular esa salida a través del "objeto de interfaz" al elemento UI. Después de eso, puede usar la salida como cualquier otra variable en su codificación.

IBAction: un método especial desencadenado por objetos de interfaz de usuario. Interface Builder los reconoce.

@interface Controller { IBOutlet id textField; // links to TextField UI object } - (IBAction)doAction:(id)sender; // e.g. called when button pushed

Para obtener más información, consulte Apple Docs


IBAction e IBOutlet son macros definidas para indicar variables y métodos a los que se puede hacer referencia en Interface Builder.

IBAction resuelve void e IBOutlet resuelve en nada, pero significa que el constructor de Xcode e Interfaz puede usar estas variables y métodos en el constructor de Interfaces para vincular los elementos de la interfaz de usuario a su código.

Si no va a utilizar Interface Builder, no los necesita en su código, pero si va a usarlo, debe especificar IBAction para los métodos que se usarán en IB y IBOutlet para objetos que se usarán en IB.