Текст UILabel не отображается, но значение «текст» обновляется (отображается в консоли) - PullRequest
5 голосов
/ 25 ноября 2011

Я создал UILabel в своем файле .storyboard с начальным текстом «Название фильма».Я подключил этот UILabel к свойству, определенному в моих файлах ViewController.По какой-то причине текст не будет отображаться в пользовательском интерфейсе при запуске симулятора.Я смотрел на похожие вопросы, но я не видел ни одного ответа, который бы помог.

У меня есть следующее свойство в моем файле .h

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

Он синтезирован в моем .mfile

@synthesize movieTitle;

Затем у меня есть некоторый код, который выполняет следующее:

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);

Консоль выводит следующее

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

Ответы [ 3 ]

6 голосов
/ 25 ноября 2011

Убедитесь, что вы устанавливаете свойство text в главном потоке.Если вы этого не сделаете, он обновит значение, но не будет перерисовывать метку.Все элементы UIKit должны обновляться только в главном потоке.

Также вам нужно создать второй UILabel, только если вы не подключаетесь к IBOutlet в Интерфейсном Разработчике.

3 голосов
/ 25 ноября 2011

Если movieTitle подключен к Интерфейсному Разработчику UILabel;, вам не следует создавать другой экземпляр:

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

Вы задаете текст UILabel, а не текст в GUI.

Просто удалите эту строку, см. Ниже:

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);
2 голосов
/ 01 февраля 2013

Этот ответ может не соответствовать вашему случаю, но вы можете найти его полезным.

В моем случае я поместил метку внизу контроллера вида входа в систему, чтобы отобразить версию моего приложения.Когда я запускаю тестирование приложения, ярлык не появляется.Проблема заключается в том, что, хотя файл входа в систему .xib предназначен для полноэкранного режима Retina 4, целевой показатель развертывания (в разделе «Обзор приложений») равен 5.0, поэтому при запуске приложения (на симуляторе) фактически выполняется симулятор iPhone 5.0 сэкран 3,5 ". А поскольку метка находится в нижней части экрана, она находится вне зоны обзора 3,5" экрана.Чтобы это исправить, просто измените автоматический размер метки.

Надеюсь, это поможет.

...