2012-05-03 3 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

시도가 각각 0.25 초 호출되는 않는 한 updateTimer 외부

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

방법.

나 :

- (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

시간이 float로 선언 되었습니까? 처음에는 1.0f로 설정해야합니다. –

+1

부동 소수점 변수 'time – Deepesh