2014-11-19 3 views
1

UILabel в моем файле .xib, подключенном к моему файлу .m с IBOutlet, не обновляет, пытаюсь ли я установить текст в файле инициализации, viewDidLoad или viewWillAppear. Я столкнулся с аналогичной проблемой четыре дня назад (Can't assign text to UILabel or pass NSString property when modally loading a view controller), и единственное, что сработало, это удаление контроллера вида и его xib и начало работы. Я бы предпочел не делать этого, поэтому я отправляю сообщения, чтобы узнать, что еще может решить эту проблему. Вот код:Текст UILabel не обновляется

@interface LoginViewController() <UITextFieldDelegate, UIGestureRecognizerDelegate> 

@property (nonatomic, strong) NSURLSession *session; 

@property (weak, nonatomic) IBOutlet UILabel *notificationLabel; 

@property (weak, nonatomic) IBOutlet UITextField *username; 

@property (weak, nonatomic) IBOutlet UITextField *password; 

@property (nonatomic) int loggedin; 

@end 

Я пытаюсь изменить этикетку с моим initWithNibName:

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil 

{ 

    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; 



    if(self){ 

     [email protected]"Followers & Following"; 

     self.navigationController.navigationItem.title = @"Follow"; 



     NSURLSessionConfiguration *config = [NSURLSessionConfiguration defaultSessionConfiguration]; 

     _session = [NSURLSession sessionWithConfiguration:config delegate:nil delegateQueue:nil]; 



     self.restorationIdentifier = NSStringFromClass([self class]); 

     self.restorationClass = [self class]; 

     [self view]; 

     self.notificationLabel.text = @"Hello world"; ****************** 

     [self.view setNeedsDisplay]; 

    } 

    return self; 

} 

Я также пытаюсь изменить его в viewDidLoad:

- (void)viewDidLoad { 

    [super viewDidLoad]; 

    // Do any additional setup after loading the view from its nib. 

    self.navigationItem.title = @"Login"; 



    UITapGestureRecognizer* tapBackground = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(dismissKeyboard:)]; 

    [tapBackground setNumberOfTapsRequired:1]; 

    [self.view addGestureRecognizer:tapBackground]; 



      self.notificationLabel.text = @"Hello world"; ****************** 

      [self.view setNeedsDisplay]; 

} 

и я делаю то же самое в viewWillAppear (я оставлю это для краткости). IBOutlet подключен, поэтому я не вижу, что еще может произойти неправильно. Это будет очень неприятно, если мне придется удалить эти файлы и начать все сначала, потому что - что еще может быть не так, что я не проверю?

спасибо.

+1

Сначала установите точку останова и убедитесь, что свойство не равно нулю. Если это не так, я бы изменил цвет фона или что-то в IB, чтобы вы могли проверить, что поле действительно видимо, а не за пределами экрана/слишком мало/закрыто. – Paulw11

+0

Я могу видеть ярлык при запуске приложения. Он начинается как «Ярлык». –

+0

Хорошо, тогда проверьте свойство не ноль – Paulw11

ответ

1

Розетки никогда не будут установлены в вашем методе init, потому что XIB-файл/раскадровка не загружается в этот момент.

Должно работать в viewDidLoad или viewWillAppear:. Если это не так, это означает, что ваше выходное соединение нарушено. Это самая распространенная причина для кода, который работает с выходами, которые, похоже, должны работать, но это не так.

Смежные вопросы