2011-12-02 30 views
5

He leído otras preguntas aquí, pero parecen ser para Xcode 3.2 o anterior, pero nada para 4.2. :(IBOutlet no se conecta en Interface Builder- Xcode 4.2

empecé un proyecto simple y faltaba para conectar las salidas del propietario del archivo dentro de mi xib. El fastidio es que de mis IBOutlet de mis ViewController.h no van a venir.

no tengo . una reputación de 10 o superior, por lo here is a screenshot of my File's Owner not showing my IBOutlets

Aquí está mi código ViewController.h:

#import <UIKit/UIKit.h> 

@interface ViewController : UIViewController { 
    IBOutlet UITextField *txtName; 
    IBOutlet UILabel *lblMessage; 
} 

@property (nonatomic, retain) IBOutlet UITextField *txtName; 
@property (nonatomic, retain) IBOutlet UILabel *lblMessage; 

- (IBAction)doSomething; 

@end 

Aquí está mi código ViewController.m:

#import "ViewController.h" 

@implementation ViewController 

@synthesize txtName; 
@synthesize lblMessage; 

- (IBAction) doSomething 
{ 
    NSString *msg = [[NSString alloc] initWithFormat:@"Hello, %@",txtName.text]; 
    [lblMessage setText:msg]; 
} 

@end 

Soy nuevo en Objective-C y Xcode, así que podría haber cometido un error, pero he seguido muchos tutoriales y nunca puedo mostrar mis IBOutlets. He ido tan lejos como para eliminar Xcode 4.2 y volver a instalar para intentar solucionar este problema. Aquí hay un screenshot of my Xcode Version 4.2, Build 4D199 info.

¿Alguien más se ha encontrado con este problema? Gracias a todos los que puedan señalar cualquier error que haya cometido. Por favor, avíseme si se necesita más información.

Respuesta

16

Cuando cree su IBAction, en el archivo .h, habrá un indicador de conexión a la izquierda de él. Cuando no está conectado, muestra un círculo vacío.

Mantenga presionado este botón y arrástrelo al elemento que desea conectar. Normalmente abro el XIB en una nueva ventana haciendo doble clic en él.

Connect the IBAction to your button by dragging from the the .h file


Si no lo puedo conectar debe establecer el File's Owner en el archivo XI ter. Seleccione File's Owner en el panel Marcadores de posición. Diríjase al panel Utilidades y asegúrese de que Custom class, en Identity Inspector, esté configurado como el nombre del controlador de vista.

Set files owner

espero que esto le ayudará.

¡Salud!

+0

La segunda parte de esto hizo el truco. Supongo que asumí que estaba configurado por defecto. ¡Realmente aprecio la ayuda y las capturas de pantalla! – scared

+0

Intenté casi todo, pero su primer truco de abrir una nueva ventana y luego arrastrarlo funcionó. – nasaa

+0

Gracias, tu respuesta también me ayudó. Upvote. – DrinkJavaCodeJava

4

Intente reasignar la referencia de clase de propietario de archivo en el archivo xib.

Luego conecte todas sus conexiones IBOutlet.

Espero que esto te pueda ser útil.

+0

Esto hizo el truco, gracias! – scared

+0

¿Cómo reasignar? – Developer

0

Dos cosas hay que añadir, antes de Xcode permitirá la creación de IBOutlet para el campo de texto del guión:

  1. Asignar la ViewController subyacente como el delegado de la UITextField
  2. Añadir al de la @ declaración de interfaz en ViewController.h archivo:

    @interface ViewController: UIViewController < UITextFieldDelegate>

Hasta que ambos se han completado, puede Ctrl-clic y arrastre desde el guión gráfico en el fichero .h, pero sin IBOutlet la conexión estará habilitada

0

Finalmente he resuelto el problema, espero que esto ayude a alguien más a tener el mismo problema. No tuvo nada que ver con la configuración del propietario del archivo xib. Lo que mi problema era que tenía el archivo xib en un directorio diferente que los archivos de origen, por lo que no fue capaz de conectar los puntos de venta. Una vez que moví los archivos al mismo directorio, todo funcionó. FYI, moví todo al directorio superior. No estoy seguro de que los subdirectorios funcionen ...

Para mover los archivos, asegúrese de actualizar xcode para que apunte a las nuevas ubicaciones.

Cuestiones relacionadas