В моем приложении iOS я пытаюсь установить текст UILabel в другом представлении.Невозможно установить UILabel Text Programmatically
Я делаю это, передавая NSNotification viewController, когда он должен быть обновлен. Я знаю, что он правильно получает сообщение, потому что я регистрирую сообщение, но он просто не отображается в UILabel (который я добавил в раскадровке).
Это мой код:
ProcessingViewController.h
@property (weak, nonatomic) IBOutlet UILabel *progressMessage;
ProcessingViewController.m
- (void)viewDidLoad {
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(updateProgressDialog:) name:@"uploadProgress" object:nil];
}
-(void) updateProgressDialog: (NSNotification *) notification{
NSString *message = [notification object];
NSLog(@"received updateProgressDialog message of %@", message);
self.progressMessage.text = message;
[self.progressMessage setNeedsDisplay];
}
Мой Раскадровка:
Является ли 'IBOutlet' зацепил? I.e., является 'progressMessage' non-'nil'? Если 'nil', это может произойти либо в том случае, если' IBOutlet' не подключен в Interface Builder, а сам контроллер представления некорректно создан (например, '[[[ProcessXController alloc] init]', а не '[self.storyboard instantiateViewControllerWithIdentifier : ...] '). – Rob
@Rob да и да. Я могу зарегистрировать progressMessage и подтвердить, что это не ноль. Кроме того, я подключил IBOutlet, используя раскадровку. Я добавил изображение, чтобы показать, как я подключил IBOutlet. – scientiffic
Затем подтвердите 'frame'' progressMessage'. Убедитесь, что он достаточно широкий, чтобы отобразить текст. Возможно, вы захотите взглянуть на всю иерархию представлений, чтобы убедиться, что кадры правильные и что у вас нет чего-то перед ярлыком, затеняя его. Например, выполните паузу и введите 'po [[UIWindow keyWindow] recursiveDescription]' в приглашении '(lldb)'. Вы также можете попробовать несколько отладочный отладчик вида, встроенный в Xcode. – Rob