2014-07-11 1 views
0

현재 날짜부터 10 분이 경과 할 때까지 카운트 다운 타이머가 있습니다.뷰를 바꿀 때 내 NSDate 카운트 다운 타이머가 변경됩니다.

뷰에 올 때 완전히 아래로 카운트 다운되지만 뷰를 변경하고 다시 돌아올 때 타이머가 멈추고 아무도 올바른 방향으로 나를 가리킬 수 있습니까?

-(void)updateCountdown { 

dateFormatter = [[NSDateFormatter alloc]init]; 
[dateFormatter setDateFormat:@"YYYY-MM-dd-HH-mm-ss"]; 

NSCalendar *calendar = [NSCalendar currentCalendar]; 
NSUInteger unitFlags = NSMinuteCalendarUnit|NSSecondCalendarUnit; 
NSDateComponents *dateComponants = [calendar components:unitFlags fromDate:startingDate toDate:endingDate options:0]; 

NSInteger minutes = [dateComponants minute]; 
NSInteger seconds = [dateComponants second]; 

NSString *countdownText = [NSString stringWithFormat:@"Free Check: %ld:%ld", (long)minutes, (long)seconds]; 
timeLabel.text = countdownText; 

NSLog (@"Startdate is %@", startingDate); 
NSLog(@"Enddate is %@", endingDate); 

//Attempt at saving the time but I guess this only saves the text? 
NSString * saveStringTime = timeLabel.text; 
NSUserDefaults * defaultsTime = [NSUserDefaults standardUserDefaults]; 
[defaultsTime setObject:saveStringTime forKey:@"saveStringTime"]; 
[defaultsTime synchronize]; 

[self performSelector:@selector(updateCountdown) withObject:nil afterDelay:1]; 
} 

언제든지 내 ViewDidLoad에 무엇이 필요할까요?

당신은 "savedTime"에서 다시 시작 viewWillAppear에서 "savedStringTime"을 얻을 수 있습니다

+0

돌아와서 다시 떠날 때 볼 컨트롤러의 할당이 해제됩니까? –

+0

잘 모르겠습니다. 어떻게 확인할 수 있습니까? – user3739958

+0

dealloc을 구현하고 로그를 넣거나, viewDidLoad에 로그를 넣고 컨트롤러로 돌아갈 때 다시 호출되는지 확인할 수 있습니다. – rdelmar

답변

1

주셔서 감사합니다. 뷰가 메모리에로드 된 경우에만 viewDidLoad가 호출되기 때문에 뷰가 메모리에 남아 있기 때문에 사용자가 동일한 뷰로 다시 이동할 때 viewDidLoad가 호출되지 않습니다.

제대로 작동하려면 메서드를 호출하여 "viewWillDisappear"및 "viewWillAppear"에서 "savedStringTime"이 사용 가능한지 확인한 다음 예인 경우 다시 시작하거나 다시 카운터를 새로 시작하십시오.

관련 문제