2013-10-21 4 views
1

iOS 6 보존 및 복원 (Storyboard 없음)을 사용 중이며 Navigation Controller와 잘 작동하지만 메인 창에 Tabbar 컨트롤러를 수동으로 추가하면 선택한 탭을 얻지 못하고 있습니다.Storyboard없이 Tabbar에 대한 보존 및 복원

예 : t에서

ListViewController *list = [[ListViewController alloc] initWithNibName:@"ListViewController" bundle:nil]; 
SettingViewController *setting = [[SettingViewController alloc] initWithNibName:@"SettingViewController" bundle:nil]; 

UINavigationController *navigation = [[UINavigationController alloc] initWithRootViewController:list]; 
navigation.restorationIdentifier = @"NavigationControllerID"; 

self.tabbar = [[UITabBarController alloc] init]; 
self.tabbar.restorationIdentifier = @"TabbarControllerID"; 
    self.tabbar.viewControllers = @[navigation,setting]; 

[[_tabbar.tabBar.items objectAtIndex:0] setTitle:NSLocalizedString(@"List", @"comment")]; 
[[_tabbar.tabBar.items objectAtIndex:1] setTitle:NSLocalizedString(@"Setting", @"comment")]; 

self.window.rootViewController = self.tabbar; 
[self.window makeKeyAndVisible]; 

그의 경우 내가 모든 없단를 선택한 첫 번째 탭을 얻고 것은 뷰 컨트롤러를 설정

+ (UIViewController *)viewControllerWithRestorationIdentifierPath:(NSArray *)identifierComponents coder:(NSCoder *)coder 

을 implatementd있다.

는 NSString *의 CONST AppDelegateRootVCKey = @ "AppDelegateRootVCKey"

AppDelegate에이 방법을 추가하여

답변

0

;

- (void)application:(UIApplication *)application willEncodeRestorableStateWithCoder:(NSCoder *)coder { 
//Adding last tabbar selected index 
[coder encodeObject:[NSString stringWithFormat:@"%d",self.tabbar.selectedIndex]forKey:AppDelegateRootVCKey]; 

}

- (BOOL)application:(UIApplication *)application shouldRestoreApplicationState:(NSCoder *)coder { 


//Setting Last tabbar selected index 
NSString *selectedStr = [coder decodeObjectForKey:AppDelegateRootVCKey]; 
self.tabbar.selectedIndex = [selectedStr intValue]; 

return YES; 

}