2010-12-09 3 views
1

내 iPhone 설정 앱에서 '다음 출시에 환경 설정 지우기'로 설정할 수있는 슬라이더로 내 앱에 대한 설정 패널을 만들었습니다. 내 애플의 델리게이트에서는 applicationWillEnterForeground가 환경 설정에서 설정 스위치가 설정되었는지 확인하고 필요한 경우 [NSUserDefaults standardUserDefaults] setPersistentDomain:[NSDictionary dictionary] forName:[[NSBundle mainBundle] bundleIdentifier]];을 사용하여 설정을 지우도록했습니다.빠른 앱 전환으로 iOS4에서 앱 설정을 재설정하는 가장 좋은 방법

내 질문 : iOS 4의 빠른 앱 전환 (설정 앱에서 돌아 왔을 때보기가 계속로드 됨)으로 인해 설정을 변경 한 후에 내 View Controller에서 viewDidLoad 및 viewDidAppear가 실행되지 않는 경우, 이보기 컨트롤러에 설정이 재설정되어 모든 데이터를 다시로드 할 수 있다고 경고 할 수 있습니까? 델리게이트에서 [MainViewController initData]를 호출 할 수있는 방법이 있지만 슬프게도 그렇게 할 수 없다면. 보기 컨트롤러에서 발생하는 작업이 없으면 설정이 재설정되었는지 확인할 수있는 방법이 없습니다.

도움을 주시면 감사하겠습니다.

답변

1

알림은 종종 컨트롤러 등을 통해 통신하는 가장 좋은 방법입니다.

먼저 초기화 코드를 viewDidLoad/viewWillAppear에 의해 호출되는보기 컨트롤러의 메소드로 분리하십시오. 참고를 위해 재설정 사용자이라고합니다.

다음으로이 스위치가 throw 된 것으로 확인되면 applicationWillEnterForeground에서 발생하는 알림을 만듭니다. userRequestsReset이라고합시다.

[[NSNotificationCenter defaultCenter] postNotificationName:@"userRequestsReset" 
                                                    object:nil]; 

마지막으로, 당신의 ViewController에 userRequestsReset 알림을 수신하고 알림이 수신 될 때 resetUser 메서드를 호출합니다. 당신의 ViewController의의 viewDidLoad에서

:

[[NSNotificationCenter defaultCenter] addObserver:self 
                                         selector:@selector(resetNoticeReceived:) 
                                             name:@"userRequestsReset" 
                                           object:nil]; 

알림에 응답 당신의 ViewController에있어서

- (void) resetNoticeReceived:(NSNotification *)notif { 
    [self resetUser]; 
} 

그리고 viewDidUnload에서 관찰자로의 ViewController를 제거 :

[[NSNotificationCenter defaultCenter] removeObserver:self]; 
+0

답장을 보내 주셔서 대단히 감사합니다, Matthew. 나는 이것을 지금 구현할 수 있는지 알게 될 것입니다. (아직 미숙 한 사람이라면 유감스럽게 생각합니다.) – Jackson

+0

걱정하지 않아도, 고급으로 보이지만 한 번 제공하면 매우 간단합니다. –

+0

완벽하게 작동했습니다! 정말 고마워! 귀하의 지시 사항은 매우 분명하고 따라하기 쉽습니다. 처음에는 NSNotificationCenter와 같은 아이디어를 발견했지만 지금은 매우 간단합니다. 다시 한 번 감사드립니다! – Jackson

관련 문제