2010-04-21 3 views
3

전자 책과 매우 유사한 기능을하는 앱이 있습니다. 다양한 드릴 다운 방법을 통해 액세스 할 수있는 다양한 언어의 텍스트 정보가 있습니다. 사용자가 마지막으로 읽은 곳으로 들어가기를 원하면 섹션 및 챕터 메뉴를 탐색해야만 원래 위치로 돌아갈 수 있습니다. 이것에 대한 이상적인 솔루션은 제가 고려하고있는 북마크 시스템을 설정하는 것입니다.iPhone OS에서 가까운 시간에 앱의 상태를 저장할 수 있습니까?

하지만 정확하게 기억한다면 아이폰 OS 4가 발표되었을 때 앱의 상태를 저장하는 추가 기능을 많이 확보 한 것처럼 보였습니다. 즉, 내 리더 앱을 사용하는 사람이 곧바로 종료 할 수 있고, 무엇이든 할 수 있고, 다시 들어가면 독서 화면이됩니다.

북 마킹 시스템을 설정하는 방법에 대해서는 잘 모릅니다. 조사할만한 가치가 있다고 생각합니다.하지만 실제로 iPhone OS 4를 사용하고 싶지는 않습니다. . 어떤 생각이나 통찰력도 인정 될 것입니다 !!

+0

가 여기에 매우 유효한 우려하지만, 싱크시

NSArray *classes = [[NSUserDefaults standardUserDefaults] objectForKey:@"ViewControllers"]; if(classes != nil) { for(NSString *class in classes) { if([class isEqualToString:@"FirstViewController"]) { FirstViewController *viewController = [[FirstViewController alloc] init]; [controllers addObject:viewController]; [viewController release]; } else if([class isEqualToString:@"SecondViewController"]) { SecondViewController *viewController = [[SecondViewController alloc] init]; [controllers addObject:viewController]; [viewController release]; } else if([class isEqualToString:@"ThirdViewController"]) { ThirdViewController *viewController = [[ThirdViewController alloc] init]; [controllers addObject:viewController]; [viewController release]; } else { } } } 

: 코드의 앱에 복원 우리는 어떻게 4에 관해서 이야기하기로되어 있지 않습니다.0은 NDA의 b/c에서 작동합니다. 대신 Apple 개발자 포럼에서이 정보를 요청해야합니다. – bpapa

+1

이 질문은 내가 말할 수있는 한 3 번 정확하게 대답되었다. 답변 중 하나를 수락하거나 알려주십시오. 감사. – prendio2

답변

5

이것은 항상 iPhone OS에서 가능했습니다. 대부분의 사람들은 NSUserDefaults을 사용하여 응용 프로그램의 상태를 저장합니다. 그런 다음 응용 프로그램 대리자의 -applicationDidFinishLaunching 메서드 또는보기를 설정하고 응용 프로그램 상태를 초기화 할 때마다 NSUserDefaults을 사용하여 저장 한 상태로 복원하면됩니다.

3

세이브 상태를 의미하는 것은 백그라운드 어플리케이션을위한 것입니다. eBook 앱은 백그라운드에서 실행될 필요가 없으므로 OS 3과 마찬가지로 상태를 저장하고 복원해야합니다. NSUserDefaults가 이에 적합합니다.

5

다른 사람들은 이것이 OS4에만 국한된 것이 아니므로 모든 응용 프로그램에서이를 구현하는 것이 좋습니다.

나는 사용자가 예를 들어 책의 페이지를 전환 할 때 다음과 같이 NSUserDefaults을 사용하여 해당 페이지에 대한 참조를 저장하는 것이 제안 :

NSUserDefaults *userPreferences = [NSUserDefaults standardUserDefaults]; 
[userPreferences setObject:currentPageNumber forKey:@"pageNumber"]; 

응용 프로그램이이 값을 읽고 그에 따라 행동 할 수 출시 .

[[NSUserDefaults standardUserDefaults] stringForKey:@"pageNumber"]; 

당신은 응용 프로그램이 종료하려고 할 때 참조를 저장 만 선호 할 수도 있지만


는 또한, 당신이 언급 (응용 프로그램이 예기치 않게 종료 경우) 이전을 저장하는 더 나은 방법입니다 사용자가 여러 "드릴 다운 방법"을 탐색합니다. 정확히 사용자가 앱에있는 NSMutableArray의 기록을 유지하고이를 NSUserDefaults에 저장하는 것이 좋습니다. 앱이 실행되면이 배열의 정보를 처리하여 사용자가 중단 한 위치로 돌아 가게합니다.

3

당신은 당신이 다음 코드 줄을 사용하여 탐색 컨트롤러를 사용하는 경우 당신에게 응용 프로그램 상태를 저장합니다 : 배경 에 입력 않은 응용 프로그램 종료시

NSMutableArray *listOfClasses = [[NSMutableArray alloc] init]; 
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
[defaults removeObjectForKey:@"ViewControllers"]; 
NSArray *controllers = [_navController viewControllers]; 

for(UIViewController *VC in controllers) 
    [listOfClasses addObject:[NSString stringWithFormat:@"%@",[VC class]]]; 

[defaults setObject:listOfClasses 
      forKey:@"ViewControllers"]; 
[defaults synchronize]; 

을 당신은이 라인을 사용할 수 있습니다 응용 프로그램 한 마무리로드

관련 문제