2012-07-10 5 views
-2

내 앱에서 일정 기간 (예 : 15 분 또는 15:00)을 제공하고 작업에서 시작하는 방식으로 카운트 다운 타이머를 만들고 싶습니다.선택한 기간 동안 iPhone 카운트 다운 타이머

또한 카운트 다운 타이머가 외부 웹 서비스에서 경과 시간 및 총 지속 시간 정보를 가져와 나머지 시간 동안 카운트 다운을 시작해야합니다.

이것은 실제로 사용자에게 일련의 질문이 표시되며 타이머가 질문 화면에 표시됩니다 (단 하나의 질문이 아니라 전체 퀴즈의 경우). 사용자는 퀴즈 기간을 설정할 수 있으며 사용자가 퀴즈를 시작하자마자 카운트 다운 타이머가 시작됩니다. 또한 사용자가 테스트를 일시 중지 할 수있는 일시 중지 기능이 있으며 시간 경과 및 총 지속 시간 정보가 웹 서비스에 등록됩니다. 사용자는 일시 중지 된 시간부터 바로 시작되는 카운트 다운 타이머로 언제든지 퀴즈를 재개 할 수 있습니다 (즉, 웹 서비스에서이 정보를 가져옴). 사전에

감사합니다.

추 신 : 솔직히 말해서, 나는 그것에 대해 어떻게 해야할지 잘 모릅니다. 시간이 웹 서비스에 저장 될 형식과 NSTimer가 루프 등으로 실행 된 후에 프로그램이 앞으로 진행되는 것과 같은 많은 다른 것들에 대한 혼란이 너무 많았습니다. 그래서 내가 무슨 뜻인지 알 것입니다. 예, NSTimer는 Alex가 말한대로 문제를 해결하고 샘플 코드도 제공합니다.

+0

당신은 [NSTimer]에 대한 설명서 (https://developer.apple.com/library/mac/#documentation/Cocoa/Reference 봤어 /Foundation/Classes/nstimer_Class/Reference/NSTimer.html)? 너 뭐 해봤 니? – Dima

답변

3

NSTimer의 문서를보십시오.

일반적으로, 당신과 같이, 모든 두 번째 방법을 호출하는 NSTimer를 만들 것입니다 :

NSTimer *theTimer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(tick) userInfo:nil repeats:YES]; 

그런 다음 틱, 당신은 남은 시간을 유지하는 변수를 감소, 디스플레이의 레이블을 업데이트 할 것입니다.

또한 작동중인 샘플 코드가 필요하면 check out my little countdown app을 GitHub에 추가하십시오.

0

이 코드를 사용해보십시오. 이미 앱에서 구현했습니다. 재전송 OTP 유형 기능에 가장 적합합니다. }

- (void)updateCounter:(NSTimer *)theTimer { 
if(secondsLeft > 0) { 
    secondsLeft -- ; 
    hours = secondsLeft/3600; 
    minutes = (secondsLeft % 3600)/60; 
    seconds = (secondsLeft %3600) % 60; 
    labelSeconds.text = [NSString stringWithFormat:@"%02d seconds left.",seconds]; 
} else { 

    [timer invalidate]; 
    return; 
} 

}

int secondsLeft; 
int hours, minutes, seconds; 

secondsLeft = 60; 
[self countdownTimer]; 

-(void)countdownTimer { 
// secondsLeft = hours = minutes = seconds = 0; 
timer = [NSTimer scheduledTimerWithTimeInterval:1.0f target:self selector:@selector(updateCounter:) userInfo:nil repeats:YES];