2012-10-07 5 views
1

상태 복원 및 보존을 구현하는 데 아무런 노력을 기울이지 않았습니다.iOS 6 스토리 보드없이 보존 및 복원

저는 스토리 보드를 사용하지 않습니다. 나는 틀린 일을해야만한다.

모든 Nib 파일에 대한 복원 식별자를 설정했습니다.

나는 상태가 저장되고 있지만 제대로 복원 된 적이 없다는 것을 알고 있습니다. 마지막 상태가 0.5 초 동안 표시된 다음 기본보기로 돌아갑니다. 나는 운이없는 많은 것을 시도했다. 도와주세요! application:didFinishLaunchingWithOptions:가 호출되기 전에 복원이 수행되므로

-(BOOL)application:(UIApplication *)application willFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
    NSLog(@"will finish"); 
    return YES; 
} 
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
    self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease]; 
    self.viewController = [[[ViewController alloc] initWithNibName:@"ViewController" bundle:nil] autorelease]; 

    navigator = [[UINavigationController alloc] initWithRootViewController:self.viewController]; 
    self.window.rootViewController = navigator; 

    [self.window makeKeyAndVisible]; 
    [navigator release]; 

    NSLog(@"did finish"); 
    return YES; 
} 
// As you can see, I started the process of saving and restoring application state. 
// Also, I added the restoration identifier for every class that should be restored. 

-(BOOL)application:(UIApplication *)application shouldRestoreApplicationState:(NSCoder *)coder 
{ 
    NSLog(@"restoring"); 
    return YES; 
} 
-(BOOL)application:(UIApplication *)application shouldSaveApplicationState:(NSCoder *)coder 
{ 
    return YES; 
} 
-(void)application:(UIApplication *)application didDecodeRestorableStateWithCoder:(NSCoder *)coder 
{ 
    NSLog(@"restored"); 
    //navigator = [[UINavigationController alloc] initWithRootViewController:]; 

    isRestored = YES; 
} 
+0

아직 상태 저장/복원을 통합 할 수있는 이유가 없지만 응용 프로그램에서 재개 된 상태의 모든 것을 밟았을 가능성이 있습니다. didFinishLaunchingWithOptions : 메소드. NSLog()가 콘솔에 나타나는 순서는 무엇입니까? –

+0

기독교인, 당신의 대답에 감사드립니다. NSLogs이 순서대로 표시 : 가 "완료됩니다" "복원" 는 않았다 "마무리" 당신이 지적한 것을 사실이라고 확신을 "복원". 것은 그것을 해결하는 방법을 잘 모르겠습니다. 나는 많은 것을 시도했다. iOS에서의 나의 경험은 제한적입니다. – Paradox

+1

Storyboards없이 성공하도록 노력했습니다. Storyboards가 많은 작업을 처리하고있는 것처럼 보입니다. 실제 코드를 작성하려면 실제 저장 코드가 필요합니다. 그래도 나는 틀릴 수도 있습니다. http://developer.apple.com/library/ios/#documentation/iphone/conceptual/iphoneosprogrammingguide/StatePreservation/StatePreservation.html – sachadso

답변

0

당신은 application:willFinishLaunchingWithOptions:에 컨트롤러 초기화를해야한다.

체크 this answer.

또한 프로그래밍 방식으로 모든 컨트롤러에 restorationIdentifier를 할당해야합니다.

관련 문제