Вы можете установить свой делегат приложения также как делегат 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
.., пока они не синхронизируются, они не сохраняются на диске для сохранения. Вы заметите это, если будете отлаживать и завершать работу приложения, а iOS не синхронизирует значения по умолчанию вашего приложения автоматически. Вы можете принудительно синхронизировать, но я предпочитаю оставить это, пока это не будет сделано автоматически. Чтобы помочь в случаях, когда пользователь переключает вкладку, а затем выходит, добавьте синхронизацию к - (void)applicationWillResignActive:(UIApplication *)application
и / или - (void)applicationWillTerminate:(UIApplication *)application
.
Ссылаясь на порядок табуляции, а не на выбранный индекс (мой плохой!).
Вы можете просто установить каждый из элементов панели вкладок с уникальным номером тега. (используйте перечисление в вашем делегате приложения, чтобы сохранить их уникальность). Тогда вы можете сделать это:
- (void)tabBarController:(UITabBarController *)tabBarController didEndCustomizingViewControllers:(NSArray *)viewControllers changed:(BOOL)changed;
{
NSArray *tabBarTagOrder = [tabBarController.tabBar.items valueForKey:@"tag"];
[[NSUserDefaults standardDefaults] setObject:tabBarTagOrder forKey:TabTagOrder];
}
Чтобы восстановить порядок при запуске, вы можете вручную упорядочить элементы панели вкладок в порядке, восстановленном по умолчанию, а затем напрямую установить свойство items
UITabBar
.