0

10 秒以上継続的に完了する UIProgressView を実装しようとしています。これを達成するために NSTimer を使用していますが、理解するのに苦労しています。UIProgressView と NSTimer の両方のドキュメント、および他の投稿された質問を参照しました。できれば助けてください。

私の現在の実装では、UIProgress ビューはまったく更新されません。ソースコードを以下に抜粋します。

- (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];
}

どんな助けでも大歓迎です。

4

2 に答える 2

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;
    }
}
于 2012-05-03T14:48:25.833 に答える
1

をセットアップしてみてください

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

0.25 秒ごとに呼び出されない限り、updateTimer の外側のメソッド。

また:

- (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];
}
于 2012-05-03T14:44:25.803 に答える