Как сохранить порядок панели вкладок, когда приложение закрывается? - PullRequest
1 голос
/ 27 июля 2010

Следующий пример: http://www.raddonline.com/blogs/geek-journal/iphone-sdk-uitabbarcontroller-how-to-save-user-customized-tab-order/

Не работает в iOS4.

Я хотел бы иметь возможность сохранять порядок своих вкладок при завершении работы приложения.

Ответы [ 2 ]

3 голосов
/ 27 июля 2010

Вы можете установить свой делегат приложения также как делегат 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.

0 голосов
/ 04 апреля 2011
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...