2011-02-25 6 views
0

이벤트에 대한 카운트 다운을 나타내는 int 값 (보기가 표시됨)이 있습니다. 현재, 나는이 작업을 수행합니다NSTimer를 사용하여 카운트 다운 만들기

- (void) buttonTapped:(id)sender { 
    [self performSelector:@selector(displayView) afterDelay:countdownValue]; 
} 

내가 뭘하고 싶은, 빨강, 노랑, 녹색으로 내 네비게이션 바의 다음 ...

버튼을 도청

변경 농도 색상 비례이다 카운트 다운이 만료 될 때까지보기를 표시합니다.

예를 들어 카운트 다운이 3 초인 경우, 각 색상에 대해 1 초 (5 초인 경우), 각 색상에 대해 1.666입니다.

NSTimer를 사용하여 일정을 예약 할 수 있습니까?

보기가 표시되면 타이머가 무효화되어야합니다.

감사

답변

3
float count_down = 5.0; 
[NSTimer scheduledTimerWithTimeInterval: count_down*(1.0/3.0) target: self 
           selector: @selector(changeToRed:) userInfo: nil repeats: NO]; 
[NSTimer scheduledTimerWithTimeInterval: count_down*(2.0/3.0) target: self 
           selector: @selector(changeToGreen:) userInfo: nil repeats: NO]; 
[NSTimer scheduledTimerWithTimeInterval: count_down target: self 
           selector: @selector(changeToBlue:) userInfo: nil repeats: NO]; 

그리고 콜백 (당신이 원하는 무엇이든) :

-(void) changeToRed:(NSTimer*) t { 
    NSLog(@"red"); 
} 

-(void) changeToGreen:(NSTimer*) t { 
    NSLog(@"green"); 
} 

-(void) changeToBlue:(NSTimer*) t { 
    NSLog(@"blue"); 
} 
+0

(하나의 타이머 반복적으로 화재 대) 멀티 타이머 접근 방식에 미묘한 혜택이 있습니다. 이것을 사용하면 드리프트 오류가 누적되지 않습니다. – bbum

+0

이 기능은 저에게는 효과적이지만 버튼을 클릭하면 빨간색으로 변하는 틴트 색상이 약간 지연되는 것입니다. 첫 번째 타이머가 1 초 후에 실행되기 때문입니까? 감사합니다 – joec

+0

예. 타이머를 즉시 시작하려면 첫 번째 시간 간격을 0으로 설정하십시오. – Max