2010-07-26 19 views

回答

3

您可以將您的應用程序委託設置爲UITabBarController委託,並且選擇該選項卡時,可以將選擇以[NSUserDefaults standardDefaults]作爲整數記錄(選項卡欄控制器的選定索引)。

這樣做是:

- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController; 
{ 
    [[NSUserDefaults standardDefaults] setInteger:tabBarController.selectedIndex forKey:SelectedTabIndex]; 
} 

在啓動時,您可以使用-integerForKey:加載從默認選定的指數,它的默認值爲零,如果未找到該鍵的值,或者如果該鍵不被解析爲一個整數。

我包裹訪問保存指數與方法:

- (NSUInteger)tabIndexToSelect; 
{ 
    return [[NSUserDefaults standardDefaults] integerForKey:SelectedTabIndex]; // defaults to zero 
} 

的注意事項有關NSUserDefaults ..直到他們syncronized,他們沒有刷新到磁盤的持久性。如果您正在調試並終止應用程序,您會注意到這一點,而iOS尚未自動同步您的應用程序的默認值。您可以強制同步,但我寧願將其保留,直到自動完成。要幫助用戶切換選項卡然後退出的情況,請添加同步到- (void)applicationWillResignActive:(UIApplication *)application和/或- (void)applicationWillTerminate:(UIApplication *)application


引用tab選項而不是選定的索引(my bad!)。

您可以簡單地爲每個標籤欄項目設置一個唯一的標籤號碼。 (在您的應用程序委託中使用枚舉來保持它們的唯一性)。然後,你可以這樣做:

- (void)tabBarController:(UITabBarController *)tabBarController didEndCustomizingViewControllers:(NSArray *)viewControllers changed:(BOOL)changed; 
{ 
    NSArray *tabBarTagOrder = [tabBarController.tabBar.items valueForKey:@"tag"]; 
    [[NSUserDefaults standardDefaults] setObject:tabBarTagOrder forKey:TabTagOrder]; 
} 

要在啓動恢復順序,您可以手動組織從默認恢復秩序標籤欄項目,然後直接設置UITabBaritems財產。

+0

謝謝,這是接近我在找什麼。我的意思是在定製後恢復標籤順序。 – 2010-07-26 23:53:02

+1

+1 ['NSArray valueForKey]',非常整潔!但請注意,它是'[NSUserDefaults standardUserDefaults]',而不是'[NSUserDefaults standardDefaults]'。 – herzbube 2013-05-24 21:21:41

相關問題