現在、コントローラーで複数の html サイトを要求して解析するプロジェクトに取り組んでいます。ユーザーにフィードバックを提供するために、データの処理中に表示される 2 つ目のビューを作成しました。ステータス ラベルとプログレスバーが表示されます。私のコントローラーには、ラベルのテキストを更新するポイントがいくつかあります。残念ながら、これは時々しか機能しません。これは、ラベルがたまにしか再描画されず、おそらく 1 秒に 1 回よりも頻繁に再描画されるためだと思います。
[label setNeedsDisplay] で再描画を強制しても機能しません。
また、ラベルのテキストをグローバル変数のテキストで更新し、ラベルの setNeedsDisplay を毎秒呼び出すスレッドも作成しました。しかし、結果は同じです。一部の変更のみが表示されますが、すべてではありません。
すべてが適切にセットアップされ、ラベルが nil になることはありません。updateMethod をログに記録すると、すべて問題ないようです。表示されないだけです!
乾杯
ここに私のスレッドのコードがあります
- (void)startUpdateStatusThread{
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
[self performSelectorOnMainThread:@selector(updateFrequently) withObject:nil waitUntilDone:NO];
[pool release];
}
- (void)updateFrequently{
NSLog(@"updateFrequently: %@", currentStatus);
test++;
[self.statusLabel setText:[NSString stringWithFormat:@"%@ - %i", currentStatus, test]];
[self.statusLabel setNeedsDisplay];
[NSTimer scheduledTimerWithTimeInterval:0.0001 target:self selector:@selector(updateFrequently) userInfo:nil repeats:NO];
}