2009-09-10 4 views
0

내 멀티탭 iPhone 응용 프로그램의 상태를 복원하려고합니다. 5 개 이상의 탭이 있으며 각 탭에는 자체 탐색 컨트롤러가 있습니다. applicationDidFinishLaunching에서 마지막으로 사용자가 있던 탭을 확인하고 설정합니다.UITabBarController가 applicationDidFinishLaunching에서 "More"뷰를로드하지 않습니다.

myTabController.selectedIndex = persistedTabIndex;

그런 다음 해당 탭의 루트보기 컨트롤러에서 함수를 호출하여 복원합니다. 문제는 탭이 "추가"페이지로 이동 된 경우 뷰가로드되지 않고 호출이 NIL 랜드로 사라지는 것입니다. 해당 뷰 컨트롤러에 해당보기를로드하도록 강제하는 방법이 있습니까?

미리 감사드립니다.

+0

문서의 메모 : 버전 3.0 이전의 iOS 버전에서이 속성은 선택한 탭 표시 줄 항목의 색인 만 반영합니다. 이 값을 탭 표시 줄에 표시되지 않고 더 많은 탐색 컨트롤러로 대신 관리하는보기 컨트롤러의 인덱스로 설정하려고해도 아무 효과가 없습니다. 대신 myTabController.selectedViewController를 사용하십시오. –

답변

0

그건 이상합니다. 내비게이션 컨트롤러가 탭 컨트롤러의 배열에있는 경우 메인 4에 있는지 여부에 관계없이 선택시 보통 때와 마찬가지로 -loadView 메서드가 호출되어야합니다. [thePersistedController loadView]을 호출 한 후 탭 컨트롤러에 알리기 전에 수동으로 호출 할 수 있습니다 그것을 선택하십시오.

1

마지막로드 된 탭을 저장하기 위해 웹에서 찾은 일부 코드를 사용하고 있습니다.

- (void)applicationDidFinishLaunching:(UIApplication *)application 
{ 
    // .. my app set up is here 

    // Select the tab that was selected on last shutdown 
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
    NSInteger whichTab = [defaults integerForKey:kSelectedTabDefaultsKey]; 
    self.tabBarController.selectedIndex = whichTab; 
} 

- (void)applicationWillTerminate:(UIApplication *)application 
{ 
    // Save the current tab so the user can start up again in the same place. 
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
    NSInteger whichTab = self.tabBarController.selectedIndex; 
    [defaults setInteger:whichTab forKey:kSelectedTabDefaultsKey]; 
} 

내 인터페이스 파일의 정의 : 내 애플 대리자에서

사용자가이 탭의 배열 (인덱스를 업데이트 할 필요가있는 경우에 탭을, 재 배열하지 않는 한이 작품
#define kSelectedTabDefaultsKey @"SelectedTab" 

바뀔 것이다).

http://iphonedevelopment.blogspot.com/2009/09/saving-tabs.html

내가 탭 "... 더"를 표시하는 탭 인터페이스에이 코드를 사용하고 있습니다 :

는 여기에 코드를 발견 원래의 페이지입니다. "More ..."부분의 탭에서 종료하면 인터페이스를 다시 시작할 때 해당 탭으로 돌아옵니다. "더보기 ..."테이블보기에서 인터페이스가 다시 시작되지는 않지만 문제는 고려하지 않았습니다.

관련 문제