2011-11-25 18 views
5

He creado un UILabel en mi archivo .storyboard que tiene texto inicial "Título de película". He conectado ese UILabel a una propiedad definida en mis archivos ViewController. Por algún motivo, el texto no se mostrará en la interfaz de usuario cuando ejecute el simulador. He visto preguntas similares, pero no he visto ninguna respuesta que ayude.El texto de UILabel no se muestra, pero el valor de "texto" se está actualizando (se muestra en la consola)

que tienen la propiedad siguiente en mi archivo .h

@property (strong, nonatomic) IBOutlet UILabel * movieTitle; 

Es sintetizada en mi archivo .m

@synthesize movieTitle; 

entonces tengo un código que hace lo siguiente:

NSLog(@"movie details title in Movie object: %@", _movie.name); 
self.movieTitle = [[UILabel alloc] init]; 
[self.movieTitle setText:self.movie.name]; 
NSLog(@"movie details title in UILabel.text: %@",self.movieTitle.text); 

La consola genera el siguiente

movie details title in Movie object: Transformers 
movie details title in UILabel.text: Transformers 

Respuesta

3

Si movieTitle está conectado a un Interface Builder UILabel;, entonces no debería ser la creación de otra instancia:

self.movieTitle = [[UILabel alloc] init]; 

se está ajustando el texto de la UILabel no el de la interfaz gráfica de usuario.

Simplemente elimine esa línea, ver más abajo:

NSLog(@"movie details title in Movie object: %@", _movie.name); 
[self.movieTitle setText:self.movie.name]; 
NSLog(@"movie details title in UILabel.text: %@",self.movieTitle.text); 
6

Asegúrese de que está estableciendo la propiedad text en el hilo principal. Si no lo hace, actualizará el valor, pero no volverá a dibujar la etiqueta. Todos los elementos UIKit deben actualizarse solo en el hilo principal.

También solo necesita crear un segundo UILabel si no se está conectando a un IBOutlet en Interface Builder.

+0

Respuesta perfecta a un problema similar que estaba teniendo. Estaba configurando el texto en una cola de fondo. –

+0

Estaba estableciendo valores en el constructor y la IU no se estaba actualizando. Su solución lo solucionó, pero me pregunto por qué no hay advertencia ni nada en la consola ... – VSG24

2

Esta respuesta puede no ser tu caso, pero puede que te sea útil.

En mi caso, puse una etiqueta en la parte inferior del controlador de vista de inicio de sesión para mostrar la versión de mi aplicación. Cuando ejecuto la prueba de la aplicación, la etiqueta no aparece. El problema es que aunque el archivo .xib de inicio de sesión está dirigido a la pantalla completa de Retina 4, el objetivo de implementación (en el resumen de la aplicación) es 5.0, por lo que cuando se ejecuta la aplicación (en el simulador) una pantalla de 3.5 ". Y como la etiqueta está en la parte inferior de la vista, está fuera de la vista de la región de la pantalla de 3.5". Para solucionar esto, simplemente cambie la autosizing de la etiqueta.

Espero que esto ayude.

Cuestiones relacionadas