나는 비슷한 문제가있었습니다. 사용자가 '설정'에서 색 구성표를 변경하기 위해 내 앱을 떠날 때 탐색 막대, 텍스트 및 색 속성을 업데이트해야합니다. 탐색 막대 색상을 업데이트 할 수 있었지만 탐색 막대 텍스트 색상이 업데이트되지 않았습니다. 내 솔루션 : '스토리 보드'를 사용하지 않습니다. 내 AppDelegate.h
에서 나는이 :
@property (….) CustomViewController *viewController;
@property (….) UINavigationController *nav;
내가 AppDelegate.m
하지 @synthesize
했다. 그런 다음
….
self.viewController = [[CustomViewController alloc ….initWithNib….
[self setNavControllerAttributes]; // My solution is in this method
self.window.rootViewController = self.nav;
….
내가 응용 프로그램의 실행 *nav
nil
심지어 처음 설정하고 알고 있지만 작동하고 것 AppDelegate.m
- (void) setNavControllerAttributes
{
self.nav = nil;
self.nav = [[UINavigationController alloc…
// Set my attributes with dictionary options and such
self.window.rootViewController = self.nav;
}
에서 대부분의 작업은 않는 방법 AppDidFinishLaunchingWithOptions:
에서 사용자가 앱을 떠났다가 다시 시작하면 nil
으로 설정됩니다. 내 유일한 관심사는 rootViewController
을 window
에 재 할당한다는 사실이지만 ARC가 내 메모리 관리를 담당 할 것이라고 생각합니다. 나는 당신이 당신의 필요에 맞게 조정할 수 있습니다 확신 내 applicationWillEnterForeground:
[self setNavControllerAttributes];
에 내가 다시 출시에 다시 메서드를 호출하여이 작업을 확인하십시오. 조심해야 할 유일한 것은 *nav
을 nil
으로 설정하면 하위 컨트롤러를 할당 해제하고 데이터를 잃을 수 있기 때문에 데이터를 저장하는 것입니다. 이것은 iOS 6에서 작동합니다. iOS 7에 다른 접근 방식이 필요하다는 것을 알게되면 다시 돌아와서 업데이트 할 것입니다. 누구든지 추가 제안 사항이 있으면 조언을 취할 것입니다. 이 도움이 되었기를 바랍니다.
applicationWillEnterForeground:
에서 메모리와 성능 오버 헤드를 최소화하기 위해 더 나은 것을 할 수 있습니다. 현재 이것은 첫 번째보기 컨트롤러를 업데이트하는 나의 방법입니다
if (self.viewController.isViewLoaded) {
[self setNavControllerAttributes];
[self.viewController viewWillAppear:YES];
}
if (self.viewController.view.window) {
// Perform other action if code above doesn't work
}