2010-12-14 3 views
1

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]; 
} 
+2

hungerBar.progressが正しく初期化されていることを確認しましたか(IBを使用していた場合)IBを通じて接続されていますか? – Sam

+0

ええ、上記のhungerBarを - (void)loadView {}で初期化しました。ごめんなさい。 :-) – Baza207

+0

任意のリテラルでhungerBar.progressを設定すると、バーe.xが更新されますか? hungerBar.progress = 0.50f; – Sam

答えて

0

私の推測、あなたの質問やコメント与え、あなたの「hungerBar」コンセントがプログレスバーに接続されていないことですInterface Builderで実行します。

+0

提案に感謝しますが、私はInterface Builderを使用していません。コード内ですべてをやっています。:-) – Baza207

+0

その後、進捗バーの作成に使用したコードを投稿することをお勧めします。 –

+0

私はUIProgressViewを作成するコードの一部を示す - (void)loadViewを追加するために上記の投稿を編集しました。これにもっと光を当てたいと思っています。 :-) – Baza207