据我了解,必须先加载 NSViewController 类的视图,然后才能通过 setter 和 getter 在视图中更改任何内容。问题是,控制器中的视图应该显示倒计时,所以视图控制器类有一个 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"];
}
一切正常,如果我在 updateCountdown 中放置一个 NSLog,它会完美记录,这意味着它正在运行,我只是无法更改标签。
使用上面的答案,我尝试在上面的代码中的几个地方使用[self view]
and [self loadView]
,但它们都没有任何区别。
我希望我已经清楚我这次要寻找什么,任何帮助将不胜感激。