Насколько я понимаю, представление класса NSViewController должно быть загружено, прежде чем что-либо можно будет изменить в представлении с помощью сеттеров и геттеров. Проблема в том, что представление в контроллере должно отображать обратный отсчет, поэтому класс контроллера представления имеет NSTimer, который будет менять stringValue каждую секунду. Но из того, что я вижу, я должен использовать что-то вроде:
[instanceOfViewControllerClass view]
в другом классе, чтобы представление загружалось, а затем работало setStringValue
.
Я задавал аналогичный вопрос раньше, но ответ был тем, что я сказал выше, в то время я не знал, что мне придется постоянно менять точку зрения.
В основном то, что я ищу, это что-то, что работает следующим образом:
//ViewControllerClass.m
-(void)startCountdown{
//here I make "invocation" using NSInvocation
[invocation setTarget:self];
[invocation setSelector:@selector(updateCountdown)];
timerLabelUpdater = [NSTimer timerWithTimeInterval:1 invocation:invocation repeats:YES];
}
-(void)updateCountdown {
//x would be calculated here by deducting 1 from an original amount of time
[timeLeftLabel setStringValue:@"x"];
}
Все работает нормально, если я помещаю NSLog в updateCountdown, он отлично регистрируется, что означает, что он работает, я просто не могу изменить метку.
Используя приведенный выше ответ, я пытался использовать [self view]
и [self loadView]
в нескольких местах кода выше, но ни один из них не имеет значения.
Я надеюсь, что я ясно понял, что я ищу на этот раз, любая помощь будет оценена по достоинству.