以下示例: http://www.raddonline.com/blogs/geek-journal/iphone-sdk-uitabbarcontroller-how-to-save-user-customized-tab-order/如何保存應用程序終止時的標籤欄順序?
不適用於iOS4。
我希望能夠在應用程序關閉時保存我的選項卡的順序。
以下示例: http://www.raddonline.com/blogs/geek-journal/iphone-sdk-uitabbarcontroller-how-to-save-user-customized-tab-order/如何保存應用程序終止時的標籤欄順序?
不適用於iOS4。
我希望能夠在應用程序關閉時保存我的選項卡的順序。
您可以將您的應用程序委託設置爲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];
}
要在啓動恢復順序,您可以手動組織從默認恢復秩序標籤欄項目,然後直接設置UITabBar
的items
財產。
謝謝,這是接近我在找什麼。我的意思是在定製後恢復標籤順序。 – 2010-07-26 23:53:02
+1 ['NSArray valueForKey]',非常整潔!但請注意,它是'[NSUserDefaults standardUserDefaults]',而不是'[NSUserDefaults standardDefaults]'。 – herzbube 2013-05-24 21:21:41