- (void)applicationDidFinishLaunching:(UIApplication *)application { NSArray* classNames = [[NSUserDefaults standardUserDefaults] arrayForKey:@"kTabBarControllerOrder"]; if(classNames.count > 0) { NSMutableArray* controllers = [[NSMutableArray alloc] init]; for(NSString* className in classNames) { for(UIViewController* controller in self.tabBarController.viewControllers) { NSString* controllerClassName = nil; if([controller isKindOfClass:[UINavigationController class]]) { controllerClassName = NSStringFromClass([[(UINavigationController*)controller topViewController] class]); } else { controllerClassName = NSStringFromClass([controller class]); } if([className isEqualToString:controllerClassName]) { [controllers addObject:controller]; break; } } } if(controllers.count == self.tabBarController.viewControllers.count) { self.tabBarController.viewControllers = controllers; } [controllers release]; } // Configure and show the window [window addSubview:[tabBarController view]]; [window makeKeyAndVisible]; } - (void)applicationWillTerminate:(UIApplication *)application { NSMutableArray* classNames = [[NSMutableArray alloc] init]; for(UIViewController* controller in self.tabBarController.viewControllers) { if([controller isKindOfClass:[UINavigationController class]]) { [classNames addObject:NSStringFromClass([[(UINavigationController*)controller topViewController] class])]; } else { [classNames addObject:NSStringFromClass([controller class])]; } } [[NSUserDefaults standardUserDefaults] setObject:classNames forKey:@"kTabBarControllerOrder"]; [[NSUserDefaults standardUserDefaults] synchronize]; [controllers release]; }