Обновление элементов пользовательского интерфейса с помощью конструктора контроллера - PullRequest
0 голосов
/ 11 сентября 2009

У меня есть NSSlider (слайдер) и NSLabel (метка) в окне. У меня также есть класс «Controller», который обновляет метку всякий раз, когда изменяется значение ползунка.

Положение ползунка по умолчанию составляет 0,5, я пытаюсь получить, где конструктор контроллера обновляет метку при запуске программы.

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

@implementation Controller
{

}

-(id)init
{
    NSLog(@"initializing...");  
    [self updateLabel];     
    return self;
}

- (IBAction)sliderChanged:(id)sender
{
    [self updateLabel];   
}

- (void)updateLabel
{
    label.text = [NSString stringWithFormat:@"%.1f", slider.value];
}

@end

В консоли я вижу текст "initializing ...", но метка никогда не обновляется. Чего мне не хватает?

Ответы [ 2 ]

2 голосов
/ 11 сентября 2009

Контроллер может инициализироваться (где вы звоните на [super init]?), Но это не значит, что розетки подключены. Правильный способ сделать это - использовать метод viewDidLoad, windowDidLoad или awakeFromNib.

0 голосов
/ 11 сентября 2009

Вы должны достичь этого с помощью привязок и без какого-либо «клеевого кода» в контроллерах.

Вот несколько ссылок о том, как их использовать: http://cocoadevcentral.com/articles/000080.php

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...