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 подключен, поэтому я не вижу, что еще может произойти неправильно. Это будет очень неприятно, если мне придется удалить эти файлы и начать все сначала, потому что - что еще может быть не так, что я не проверю?
спасибо.
Сначала установите точку останова и убедитесь, что свойство не равно нулю. Если это не так, я бы изменил цвет фона или что-то в IB, чтобы вы могли проверить, что поле действительно видимо, а не за пределами экрана/слишком мало/закрыто. – Paulw11
Я могу видеть ярлык при запуске приложения. Он начинается как «Ярлык». –
Хорошо, тогда проверьте свойство не ноль – Paulw11