2012-05-03 9 views
0

私は、10秒間にわたって連続して完了するUIProgressViewを実装しようとしています。私はこれを達成しようとNSTimerを使用していますが、私はそれを考え出すのに苦労しています。私はUIProgressViewとNSTimerの両方のドキュメントと他の投稿された質問に相談しました。できれば助けてください。UIProgressViewとNSTimerを使用したカウントダウンの実装

私の現在の実装では、UIProgress Viewはまったく更新されません。ソースコードは下記から抜粋しています。

- (void)updateTimer:(NSTimer *)timer 
{ 
    // sets timer 
    [self setTimer:[NSTimer scheduledTimerWithTimeInterval:0.25f 
                target:self 
               selector:@selector(updateTimer:) 
               userInfo:nil 
               repeats:YES]]; 
    float newProgress = [self.timeProgressView progress] + 0.025; 
    [self.timeProgressView setProgress:newProgress animated:YES]; 
} 

何か助けていただければ幸いです。

+0

を試してみてください、あなたのUIProgressViewはIBOutletに接続されているか、どこかにサブビューとして追加されていますか? –

答えて

1

はセットアップにupdateTimer外

[self setTimer:[NSTimer scheduledTimerWithTimeInterval:0.25f 
                target:self 
               selector:@selector(updateTimer:) 
               userInfo:nil 
               repeats:YES]]; 

方法、それはそれぞれ0.25秒呼び出さない限り、してみてください。

か:

- (void)setupTimerWithTimer:(NSTimer *) timer{ 
[self setTimer:[NSTimer scheduledTimerWithTimeInterval:0.25f 
                 target:self 
                selector:@selector(updateTimer) 
                userInfo:nil 
                repeats:YES]]; 
} 

- (void)updateTimer{ 
    float newProgress = [self.timeProgressView progress] + 0.025; 
    [self.timeProgressView setProgress:newProgress animated:YES]; 
} 
4

この

progressView.progress = 1; 
    time = 1; 
    timer = [NSTimer scheduledTimerWithTimeInterval: 0.1f 
                                             target: self 
                                           selector: @selector(updateTimer) 
                                           userInfo: nil 
                                            repeats: YES]; 

-(void) updateTimer 
{ 
    if(time <= 0.0f) 
    { 
        //Invalidate timer when time reaches 0 
        [timer invalidate]; 
    } 
    else 
    { 
        time -= 0.01; 
        progressView.progress = time; 
    } 
} 
+0

Elppa、応答ありがとう! 'time'はfloatではなくtimeオブジェクトだと思っているので、' time'変数について、「無効なオペランドをバイナリ式に変換する」ということについては、今のところ試してみましたが、 'time'をどのように使うのか分かりません私が関数の外でそれを宣言している場合、updateTimer。明白な何かを紛失している場合はお詫びして、もう一度あなたの助けに感謝します。 –

+0

時間は浮動小数点として宣言されていますか?最初は1.0fに設定してください。 –

+1

浮動小数点変数で、時刻は「 – Deepesh

関連する問題