2014-09-04 5 views
0

나는 한 가지보기에서 UIDatePicker가있는 iPhone 앱을 가지고 있습니다.보기가 다시로드되거나 일정 기간 후에 iOS UIDatePicker를 새로 고칩니다.

처음 앱을 실행하면 뷰가 먼저로드됩니다. viewDidLoad 안에 UIDatePicker가 현재 날짜/시간으로 설정되어 있습니다. 그것은 잘 작동합니다.

이제 사용자가 앱을 최소화하고 다른 작업을 수행하지만 앱을 죽이지는 않지만 앱으로 돌아 가면 해당보기로 돌아 가면 날짜/시간이 업데이트되지 않습니다.

나는 그것이 '새로 고침', 즉 뷰가로드 될 때마다 (예 : 이미 열렸지만 배경에 앉아있는 경우) 언제든지 UIDatePicker를 다시 작성하는 방법에 대해 궁금합니다.

의견이 있으십니까?

빠른/쉬운 방법이 없다면 - UIDatePicker가 처음에로드 될 때 시간 관련 변수를 생성하는 것을 고려한 다음 다시로드 할 때 마지막 뷰부터 10 분 이상 경과했는지 확인하도록합니다. 그렇다면 UIDatePicker를 현재 날짜/시간으로 설정합니다.

아이디어가 있으십니까?

답변

3

로보기는 부하가 당신의 viewWillAppear에서 그런 다음이

- (void)viewDidLoad { 
    [super viewDidLoad]; 

    // listen for notifications for when the app becomes active and refresh the date picker 
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(refreshDatePicker) name:UIApplicationDidBecomeActiveNotification object:nil]; 
} 

같은 것을 볼 수 있었다했다 업데이트됩니다. 날짜 선택 도구가 인 경우 모두입니다. 응용 프로그램이 열려있는 동안보기가 다른보기에서이보기로 전환되는 경우와 응용 프로그램이 백그라운드로 표시되고 해당보기가 이미 열려있는 상태에서 전경으로 표시되는 경우입니다.

+0

이것은 훌륭하게 작동했습니다 - 감사합니다! 나는 사람들이 이전 날짜의 데이터를 입력하는 경우 (이것은 여행 로깅 앱 임), 화면을 떠나 뭔가를 편집하고 다시 돌아와서 날짜를 다시 설정해야 할지도 모른다는 두려움 때문에 - 그러나 그 약간의 불편 함 정보를 입력하기 전에 앱을 닫고 날짜 선택 도구를 확인하는 것을 잊었 기 때문에 잠재적으로 잘못된 날짜를 입력 할 가능성이 있습니다. 다시 한번 감사드립니다. – Hanny

+0

문제 없으니 기꺼이 도와주세요! – Mike

0

viewWillAppear 메서드에서 날짜를 설정할 수 있어야합니다. 이 메서드는 뷰가 화면에 나타날 때마다 호출됩니다.

- (void)viewWillAppear:(BOOL)animated { 
    [super viewWillAppear:animated]; 

    // refresh the date picker when the view is about to appear, either for the 
    // first time or if we are switching to this view from another 
    [self refreshDatePicker]; 
} 

그리고 단순히 새로 고침 메소드를 구현 :

- (void)refreshDatePicker { 
    // set the current date on the picker 
    [self.datepicker setDate:[NSDate date]]; 
} 

- (void) viewWillAppear: (BOOL) animated 
{ 
    [super viewWillAppear:animated]; 
    // update the date in the datepicker 
    [self.datepicker setDate:[NSDate date]]; 
} 
+0

필자가 회상 한 바에 따르면 뷰가 화면에 있고 앱이 백그라운드로 설정되어 있고 다시 포어라운드 된 경우 viewWillAppear가 호출되지 않습니다. – Mike

+0

좋은 전화 @ 마이크, 당신의 해결책이 더 좋습니다. –

관련 문제