2015-08-21 4 views
-1

Я пытаюсь изменить значение метки здесь.Почему вызов setStringValue работает в viewDidLoad и viewDidAppear, но не в других методах?

Может кто-нибудь объяснить мне, почему метод следующий вызов:

[_detailLabel setStringValue:@"this is new label value"]; 

работает, если я сделать вызов из viewDidLoad и viewDidAppear методов, но он не работает в методе, который я создал:

-(void)changeLabelValue : (NSString *) newVal { 
    [_detailLabel setStringValue:@"this is new label value"]; 
    NSLog (@"Hello from changeLabelValue method"); 
} 

Пожалуйста, обратите внимание, что, когда я называю этот метод из любого из моего кода, отображается сообщение NSLog но значение метки не меняется ...

Любая помощь глубоко оценен.

Указывая мне на ресурс, где я могу узнать больше об этом предмете, вы также поймете трюк и будете также глубоко оценены.

С уважением, Джон.

+0

Когда вы называете 'changeLabelValue:'? Это после того, как контроллер просмотра был отображен или раньше? – rmaddy

+0

Я звонил ему из watchValueForKeyPath, и это не сработало. Теперь, когда я вызываю это из viewDidLoad, работает. Пожалуйста, введите свой комментарий в качестве ответа, чтобы я мог его принять. – user2417624

ответ

2

Удостоверьтесь, что changeLabelValue: вызывается после вызова viewDidLoad (или отображается контроллер вида). Если вы вызываете его перед загрузкой представления, _detailLabel будет nil, так как он еще не загружен.

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

  • Нет связанных вопросов^_^