NSObjectクラス(Timer)でNSTimerを使用しています。このメソッドは、変数をインクリメントし、View Controller(InfoViewController)のメソッドを起動します。 (混乱; - D)NSTimerトリガーUIProgressViewエラー
すべてが画面に表示され、タイマーが正しく開始されます。変数f.hungerは正しい値を更新して表示しますが(printf( "%f"、f.hunger))、UIProgressバーは更新されません。 f.hungerの開始値は1です。
誰かが私を助けることができたら、明白な間違いを犯した箇所を指摘するか、数時間前から頭がおかしいと思っています。私は少し明確にやっていることを示すために、いくつかのサンプルコードを追加しました。
すべての人に乾杯。 :-D
タイマークラス
- (void)startHungerTimer
{
if(hungerTimer.isValid == NO)
{
infoVC = [[InfoViewController alloc] init];
self.hungerTimer = [NSTimer scheduledTimerWithTimeInterval:0.5 target:self selector:@selector(incrementHungerTimer:) userInfo:nil repeats:YES];
}
}
- (void)incrementHungerTimer:(NSTimer *)aTimer
{
f.hunger -= 0.01;
[infoVC updateHungerProgress];
}
インフォビューコントローラ
- (void)updateHungerProgress
{
Functions *f = [Functions sharedFunctions];
hungerBar.progress = f.hunger;
}
- (void)loadView
{
hungerBar = [[UIProgressView alloc] initWithProgressViewStyle:UIProgressViewStyleDefault];
[hungerBar setFrame:CGRectMake(17.0, 30.0, 160.0, 10.0)];
hungerBar.progress = f.hunger;
[bView addSubview:hungerBar];
[hungerBar release];
}
hungerBar.progressが正しく初期化されていることを確認しましたか(IBを使用していた場合)IBを通じて接続されていますか? – Sam
ええ、上記のhungerBarを - (void)loadView {}で初期化しました。ごめんなさい。 :-) – Baza207
任意のリテラルでhungerBar.progressを設定すると、バーe.xが更新されますか? hungerBar.progress = 0.50f; – Sam