2009-11-19 6 views
4

iPhone에서 하나의 웹 기반 응용 프로그램을 구현하고 있습니다. 들어오는 전화에 응답하면 내 응용 프로그램이 마지막으로 초점을 맞춘 상태로 응용 프로그램을 다시 시작하는 대신 다시 한 번 다시 실행됩니다.iphone 응용 프로그램보기 스택 재개

우리는 뷰 스택을 구현합니다. 나는 스택 방식으로 뷰를 유지 관리하고 있으며 각 뷰는 이미지 또는 텍스트 정보와 같은 정보를 가지고 있습니다. 3 번째 또는 4 번째 뷰에있는 경우 수신 전화에 응답하면 응용 프로그램이 재실행되고 첫 번째 뷰만 표시됩니다.

제 4보기 수준으로 재개하는 방법을 알려주십시오.

답변

1

불행히도 아이폰은 여기서 당신을 도우려고하지 않습니다. 나는 이것이 당신에게 유용 할 것이라는 것을 보장 할 수는 없지만, 이것이 내가하는 방법이다. 나는 그것의 상태를 저장 할 수 있어야합니다

@protocol SaveState 

    - (NSData*) saveState; 
    - (id) initWithSaveState:(NSData*)data; 

@end 

모든 UIViewController 그것을 구현 : 내 응용 프로그램에서

나는 다음과 같은 프로토콜을 가지고있다. 나는 다음 NSUserDefaultsvcList을 저장

for (UIViewController* vc in self.navigationController.viewControllers) { 
    if ([vc conformsToProtocol:@protocol(SaveState)]) { 
     NSArray* state = [NSArray arrayWithObjects:NSStringFromClass([vc class]), [(UIViewController<SaveState>*)vc saveState], nil]; 
     [vcList addObject:state]; 
    } 
} 

: applicationWillTerminate:에서

나는 다음과 같은 코드가 있습니다. 상태를 복원하려면 applicationDidFinishLaunching: :

for (NSArray* screen in screenList) { 
    UIViewController<SaveState>* next = [[NSClassFromString([screen objectAtIndex:0]) alloc] initWithSaveState:([screen count] == 2) ? [screen objectAtIndex:1] : nil]; 
    if (next != nil) { 
     [[self navigationController] pushViewController:next animated:NO]; 
     [next release]; 
    } 
    else { 
     // error handling 
    } 
}