0
加載後TabBarItem冠軍我使用這個[tutorial]保存用戶的個性化TabBarItems順序,我的應用程序已經超過5個標籤Xcode中:訂貨
本教程的理念是拯救TabBarItem冠軍,在NSUserDefault和負載他們下次打開應用程序。
我的TabBarItem標題是初始設定的XIB文件
但問題是它的英語語言工作的偉大,當我的應用程序的其他語言被加載,因爲TabBarItem標題都在開始改變到選擇的語言應用程序
因此,在重新排序TabBarItems以獲得與XIB文件中設置的標題不同的語言後,保存標題時,TabBarItem在下次應用程序啓動時不會被加載!我認爲我使用的教程只適用於TabBarItem標題,當它們與XIB文件中定義的TabBarItem標題相同時,而不是當這些TabBarItem標題基於應用程序語言以編程方式更改時!
- (void)applicationWillTerminate:(UIApplication *)application {
NSMutableArray *savedOrder = [NSMutableArray arrayWithCapacity:tabController.viewControllers.count];
NSArray *tabOrderToSave = tabController.viewControllers;
for (UIViewController *aViewController in tabOrderToSave) {
[savedOrder addObject:aViewController.tabBarItem.title];
}
[[NSUserDefaults standardUserDefaults] setObject:savedOrder forKey:@"savedTabOrder"];
}
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
[self setTabOrderIfSaved];
}
- (void)setTabOrderIfSaved {
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSArray *savedOrder = [defaults arrayForKey:@"savedTabOrder"];
NSMutableArray *orderedTabs = [NSMutableArray arrayWithCapacity:tabController.viewControllers.count];
if ([savedOrder count] > 0) {
for (int i = 0; i < [savedOrder count]; i++) {
for (UIViewController *aController in tabController.viewControllers) {
if ([aController.tabBarItem.title isEqualToString:[savedOrder objectAtIndex:i]]) {
aController.tabBarItem.title = NSLocalizedString(aController.tabBarItem.title, nil);
[orderedTabs addObject:aController];
}
}
}
tabController.viewControllers = orderedTabs;
}
}