2010-09-30 13 views
9

Estoy tratando de hacer algo tan simple como agregar una etiqueta a una vista en XCode y IB y no puedo encontrar la manera de hacerlo. Todas las muestras que encuentro en línea son para versiones anteriores de IB, por lo que las indicaciones no son correctas.¿Conectar un UILabel en Interface Builder y XCode?

Tengo una etiqueta en mi archivo .xib, en mi archivo Controller.h tengo un IBOutlet UILabel declarado con una propiedad configurada.

En mi archivo Controller.m he sintetizado esa propiedad.

En Interface Builder, no puedo por la VIDA de mí averiguar cómo asociar mi etiqueta en mi código con la etiqueta en .xib. Cada vez que intento arrastrar la conexión al propietario del archivo, la única opción que aparece es "Ver".

Si miro el controlador debajo de la ventana de biblioteca del Interface Builder, la etiqueta aparece como UILabel debajo de Outlets. Estoy bastante seguro de que solía ser un tipo "id", pero aparece automáticamente como UILabel y si trato de agregar un "id", tampoco funciona.

¿Alguien me puede indicar algún lugar para explicar esta estupidez? No debería ser tan difícil hacer que una etiqueta tenga texto.

+0

por favor, después del Controller.m y .h archivos – ennuikiller

+0

PackViewController.h: http://pastebin.com/ DesS8j50 PackViewController.m: http://pastebin.com/jasum3SB –

+0

No tiene ningún problema al declarar el iboutlet. Solo necesita conectarlo correctamente. Está intentando conectar la etiqueta al icono del propietario de los archivos reales, que solo mostrará VER. Si solo mira la publicación que le envié, escribí un montón de código que es lo mismo que pselo, pero eso es solo PARA ASEGURARSE DE QUE ESCRIBIÓ EL CÓDIGO correctamente. luego entramos en Interfacebuilder y le explico lo que debe hacer en la publicación. compruébalo a continuación. gracias PK – Pavan

Respuesta

8

Suponiendo que su vista se llama ExampleView. Haga clic en el propietario del archivo y luego presione ⌘ + 4. Esto resaltará el cuadro de identidad. Asegúrese de que el nombre de la clase sea el mismo que el de su clase.

Guardar y cerrar Interface Builder y luego entrar en Xcode y verifique:

// ExampleViewController.h 
#import <UIKit/UIKit.h> 

@class ExampleViewController; 
@interface ExampleViewController : UIViewController { 

    IBOutlet UILabel *label; 
} 

@property (retain, nonatomic) IBOutlet UILabel *label; 

@end 

En el archivo .m:

// ExampleViewController.m 
#import "ExampleViewController.h" 

@implementation ExampleViewController 

@synthesize label; 

continuación, guardar los archivos de Xcode y abrir su ExampleView. Arrastra una etiqueta a la vista. Se supone que no debes conectar esa etiqueta al propietario de los archivos.

EN LUGAR, HAGA CLIC EN EL ARCHIVADOR. HIT ⌘ + 2 esto abrirá el cuadro de conexiones. entonces verás tu outlet. Haga clic y conéctelo a su etiqueta.

+0

Al usar esta técnica parecía que iba a funcionar, pero ahora cuando intento cargar esa Vista obtengo un error "SIGABRT" con este mensaje 'esta clase no es un valor clave que cumple con la codificación de la clave cardNameLabel'. –

+0

noto un error en su código ... en su archivo .H .... se supone que debe agregar IBOUTLET después de la propiedad (retener, no atómico) IBOUTLET uilabel * cardnamelabel. simplemente arruinas la propiedad (retener, no atómica) uilabel * cardNamelabel. que no es un iboutlet – Pavan

+0

He cambiado mi código para usar el tuyo, excepto el **, ¿es eso necesario y qué hay en el mundo? –

3

Asegúrese de que el límite de la propiedad se ve así:

@property (nonatomic, retain) IBOutlet UILabel *label; 

Dejar (o conjunto) del tipo de la etiqueta como UILabel en Interface Builder. Si eso no funciona, intente con Archivo -> Volver a cargar todos los archivos de clase en Interface Builder. Su código se ve bien, pero CardNameLabel debería comenzar con una minúscula 'c'.

+1

declarar su UILabel como una propiedad es opcional. –

2

Pruebe esto: haga clic en el icono del Propietario del Archivo para seleccionarlo, y vaya a la pestaña Identidad del Inspector (la 4ta pestaña) y verifique el valor de la configuración Class. Mi suposición es que actualmente está configurado en UIViewController.

Puesto que la clase que tiene el IBOutlet que declarado es (o debería ser) una subclase de UIViewController, tendrá que cambiar el nombre de la clase que el nombre de la subclase (por ejemplo, MyController, o lo que se denomina en la actualidad) .

0

Supongamos que tiene un viewController y un archivo xib que tiene un UILabel en esto.Los pasos para la conexión de la UILabel (también el archivo xib) su viewController son:

1) En el archivo de cabecera, crear el objeto UILabel y la propiedad para que

IBOutlet UILabel *label; 

@Property (Nonatomic, retain) IBOutlet UILabel *label; 

y synchthesize en aplicar archivo

2) Abra el archivo de xib en Interface Builder

doble clic en "archivo de propietario" y luego seleccionar la lista desplegable en viewController de ventanas emergentes para conectar el archivo xib al controlador

3) haga clic derecho en el propietario del archivo, en el cuadro de diálogo emergente:

  • punto y arrastre la felpa (+) junto a "Ver" y soltarlo en Vista fila
  • punto y arrastre la felpa (+) al lado de "etiqueta" y soltarlo en la etiqueta de la vista

=> ahora la etiqueta y la vista en el archivo xib está conectado a su controlador

Cuestiones relacionadas