Pregunta

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

¿Fue útil?

Solución

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

IBAction se resuelve en void y IBOutlet no se resuelve, pero significan para Xcode y el generador de interfaces que estas variables y métodos pueden usarse en el generador de interfaces para vincular elementos de la interfaz de usuario a su código.

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

Otros consejos

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 cambio (IBAction es # define'd para ser nulo), y proporciona un argumento (id), el método sigue siendo visible. Esto proporciona flexibilidad adicional, al

Los 3 son visibles desde Interface Builder:

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

Consulte la Guía del usuario de Interface Builder de Apple para obtener detalles, en particular la sección titulada Xcode Integration.

Debe utilizar IBOutlet e IBAction si está utilizando el generador de interfaces (de ahí el prefijo IB) para sus componentes de la GUI. IBOutlet es necesario para asociar propiedades en su aplicación con componentes en IB, e IBAction se usa para permitir que sus métodos se asocien con acciones en IB.

Por ejemplo, suponga 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 una propiedad en su aplicación similar a:

UILabel IBOutlet *myLabel;
-(IBAction) pushme;

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

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

IBOutlet e IBAction están simplemente allí como marcadores que Interface Builder busca cuando analiza su código en tiempo de diseño, no tienen ningún efecto sobre el código generado por el compilador.

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

IBAction: un método especial activado 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 Documentos de Apple

Me 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 podría ver que los IBOutlets solo están allí para hacer coincidir el nombre de la propiedad con un nombre de control en el archivo Nib.

 Cómo se carga el archivo plumín, captura de pantalla del libro en línea de Matt para iOS6

IBAction e IBOutlets se utilizan para conectar su interfaz hecha en Interface Builder con su controlador. Si no usara Interface Builder y construyera su interfaz completamente en código, podría hacer un programa sin usarlos. Pero, en realidad, la mayoría de nosotros usamos Interface Builder, una vez que desees que haya cierta interactividad en tu interfaz, tendrás que usar IBActions e IBoutlets.

cuando usa Interface Builder, puede usar Connections Inspector para configurar los eventos con controladores de eventos, se supone que los controladores 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.

IBOutlet

  • Es una propiedad .
  • Cuando se carga el archivo nib (IB), se convierte en parte de los datos encapsulados que se conectan a una variable de instancia.
  • Cada conexión no se archiva y se restablece.

IBAction

  • Atributo indica que el método es una acción a la que puede conectarse desde su guión gráfico en Interface Builder.

@ - Patrón dinámico IB - Creador de interfaces

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top