2011-09-25 51 views
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; 
    } 
} 

回答

1

嘗試使用tabBarItem的標記屬性代替。

aController.tabBarItem.tag