私が理解しているように、セッターとゲッターを介してビューで何かを変更する前に、NSViewController クラスのビューをロードする必要があります。問題は、コントローラのビューがカウントダウンを表示することになっているため、ビュー コントローラ クラスには、stringValue を毎秒変更する NSTimer があることです。しかし、私が見ることができるものから、次のようなものを使用する必要があります:
[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]
を使用してみましたが、どちらも違いはありません。
今回探しているものが明確になったことを願っています。どんな助けもいただければ幸いです。