현재 스톱워치가 필요하다고 말하는 게임을 개발 중입니다. 사용자가 게임 화면에 들어가는 재생 버튼을 탭하면 1 분 동안 중지 시계 수가 내려갑니다. 01 : 00,00 : 59,00 : 58 등. 그 이유로 나는 NSTimer가 스톱워치를 구현하는 이상적인 선택 일 것이라고 판단했다. 나는 라벨을 가져 와서 NSTimer의 인스턴스를 만들고, 시간 간격을 지정하고 감소시키기 시작했다. 타이머 라벨의 값, 즉 :다른보기로 이동 한 후 NSTimer를 재설정합니다.
-(void)viewDidAppear:(BOOL)animated
{
self.stopWatchTimer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(viewWillAppear:) userInfo:nil repeats:YES];
[super viewDidAppear:YES];
}
-(void)viewWillAppear:(BOOL)animated
{
static int currentTime = 60;
int newTime = currentTime--;
int minutesRemaining = newTime/60; // integer division, truncates fractional part
int secondsRemaining = newTime % 60; // modulo division
self.timerLabel.text = [NSString stringWithFormat:@"%02d:%02d", minutesRemaining, secondsRemaining];
if ([self.timerLabel.text isEqualToString:@"00:00"])
{
[stopWatchTimer invalidate];
}
[super viewWillAppear:YES];
}
여기서 문제 01 실행하는 타이머가 시작됩니다 : 00,00 : 59,00 : 58, 초 53로 말을 내가 다른보기를 탐색하고 와서 계속을 다시, 그것은 00 : 53,00 : 52에서 계속되고 있습니다. 그러나 나는 01:00과 th 내가 viewDidDisappear에 NSTimer을 무효화하여 구현에 즉
-(void)viewDidDisappear:(BOOL)animated
{
if ([stopWatchTimer isValid])
{
[stopWatchTimer invalidate];
self.stopWatchTimer = nil;
}
[super viewDidDisappear:YES];
}
여전히 같은 문제가 존재!
문제에 대한 많은 연구를 수행했으며 유용하고 효과적인 답변을 찾지 못했습니다.
몇 사람은 나를 안내해 주실 수 있습니까, 어떤 도움을 주시면 감사하겠습니다.
미리 감사합니다 :)
완벽 함 Marcel, 효과가 있지만 유일한 문제는 이전에 표시되는 레이블입니다. 시간이 00:51이라고 말한 다음 01:00로 변경하고 타이머는 정상적으로 작동하지만보기로 돌아 가면 이전 시간이 표시되는 것을 원하지 않습니다. 감사합니다. :) –
예제 코드를 업데이트했습니다. 보기가 나타나 자마자 레이블에 텍스트를 설정해야합니다. – Marcel
Marcel이 효과가 있었지만 약간의 수정을 가해서 문제없이 작동하게 만들었습니다. 귀하의 답변을 편집 할 계획입니까? –