У меня 8 вкладок, и я использую настраиваемые tabBarItems. Таким образом, пользователь может изменить порядок вкладок. Теперь мой вопрос: как мне получить порядок вкладок и сохранить его в NSUserDefaults, чтобы он оставался неизменным, когда пользователь выходит из приложения и возвращается.
Вот код, который я получил до сих пор:
- (void)tabBar:(UITabBar *)tabBar didEndCustomizingItems:(NSArray *)items changed:(BOOL)changed {
NSMutableArray *savedOrder = [NSMutableArray arrayWithCapacity:8];
NSArray *tabOrderToSave = tabBarController.viewControllers;
for (UIViewController *aViewController in tabOrderToSave) {
[savedOrder addObject:aViewController.title];
}
[[NSUserDefaults standardUserDefaults] setObject:savedOrder forKey:@"savedTabOrder"];
}
В этом коде нет ошибок, он просто не работает.
Что я делаю не так?
Кстати: мое приложение - это tabBarApplication.
EDIT:
Вот что я сделал.
Создано приложение tabBar
Заполненные просмотры с данными
Добавлено 8 вкладок с различными видами, загруженными из контроллеров.
Затем добавили настраиваемое изменение порядка вкладок
Добавлен код выше, чтобы сохранить порядок вкладок
Должен ли я восстановить эти сохраненные данные при перезапуске приложения?
РЕДАКТИРОВАТЬ 2:
Я искал вокруг и нашел много информации об этом, но очень мало о том, как.
Вот код, который у меня сейчас есть:
- (void)applicationWillTerminate:(UIApplication *)application {
/*
Called when the application is about to terminate.
See also applicationDidEnterBackground:.
*/
NSMutableArray *vcArray = [NSMutableArray arrayWithCapacity:6];
NSArray *savedViews = tabBarController.viewControllers;
for (UIViewController *theVC in savedViews){
[vcArray addObject:theVC.title];
}
[[NSUserDefaults standardUserDefaults] setObject:vcArray forKey:@"tabLayout"];
}
- (void)tabBar:(UITabBar *)tabBar didEndCustomizingItems:(NSArray *)items changed:(BOOL)changed {
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSArray *tabLayout = [defaults arrayForKey:@"tabLayout"];
NSMutableArray *orderedLayout = [NSMutableArray arrayWithCapacity:6];
NSArray *defaultOrder = tabBarController.viewControllers;
for (int i =0; i < 6; i++){
for (UIViewController *theVC in defaultOrder) {
if ([theVC.title isEqualToString:[tabLayout objectAtIndex:i]]) {
[orderedLayout addObject:theVC];
}
}
}
tabBarController.viewControllers = orderedLayout;
}
Почему это не работает, и под этим я подразумеваю, что после настройки вкладки и нажатия кнопки «Стоп» в XCode, когда я снова запускаю ее, она не показывает мой сохраненный заказ. Что в мире я делаю не так? Это правильный способ сделать это?