次のような GameScreen.m ファイルがあります (これは単純化されたコードです)。
- (IBAction) onCellClick:(id) sender
{
points +=1;
self.myScore.text = [[NSNumber numberWithInt: points] stringValue];
//myScore is a label in GameScreenViewController xib
}
つまり、ビュー内のセルをクリックすると、テキスト ラベルが 1 増加します。
次に、同じコードにタイマーがあります。
- (void) startTimer
{
[NSTimer scheduledTimerWithTimeInterval:1.0f
target:self
selector:@selector(updateCounter:)
userInfo:nil
repeats:YES];
}
その updateCounter メソッドは次のとおりです。
- (void) updateCounter:(NSTimer *)theTimer
{
int seconds;
static int count = 0;
count +=1;
timeElapsed = [[NSString alloc] initWithFormat:@"%d", seconds + count];
self.time.text = timeElapsed;
//time is a label in GameScreenViewController xib
}
この場合、「時間」ラベルは更新されません (毎回 1 秒)。startTimer メソッドが有効で正しく呼び出されているかどうかを確認するために AlertView を挿入しました。ただし、時間ラベルの値を変更することはできません。
時間ラベルは毎秒更新されないのに、スコア ラベルはアクション時に更新されるのはなぜですか? ViewController にコードを含めずに更新する方法はありますか?
//注: 私のコーディングは 3 つのファイルに分割されます。appDelegate は画面を反転し、それらの間で値を送信します。私のviewControllersはウィンドウだけで、最後に、私のGameScreenクラスはすべてのプロセスを管理します。xib から、File's Owner が ViewController に接続され、ビューが GameScreen クラスに接続されます。
フィードバックをお寄せいただきありがとうございます。追加のコードが必要な場合はお気軽にお問い合わせください。