Я пытаюсь сохранить новые настройки табуляции, сгенерированные, когда пользователь редактирует UITabBar с помощью кнопки «Больше» -> «Редактировать», присутствующей по умолчанию (приложение имеет более 5 элементов панели вкладок). Я использую раскадровку и файлы xib/nib. Контроллеры представлений связаны с помощью раскадровки и отношений segues.Сохранение порядка UITabBarController
Я установил пользовательский класс TabBarController и добавлю делегаты для self.tabBarController и self.tabBar как self. К сожалению, заказ не сохраняется после закрытия приложения.
В NSLog
сообщения печатаются так, я знаю, что код входа в функции, указанные ниже
Вот код для сохранения/чтения порядка, который я использую:
- (void)viewDidLoad {
[super viewDidLoad];
self.tabBarController.delegate=self;
self.tabBarController.tabBar.delegate=self;
// Do any additional setup after loading the view.
}
-(void) viewWillAppear:(BOOL)animated
{
NSData *data = [[NSUserDefaults standardUserDefaults] objectForKey:@"tabOrder"];
NSArray* tabBarItems=[NSKeyedUnarchiver unarchiveObjectWithData:data];
if (tabBarItems)
{
[self.tabBarController.tabBar setItems:tabBarItems animated:YES];
NSLog(@"Loading changed Order%@",tabBarItems);
}
}
-(void)tabBar:(UITabBar *)tabBar didEndCustomizingItems:(NSArray *)items changed:(BOOL)changed
{
NSLog(@"tab bar customizer");
if (changed)
{
NSLog(@"order was changed");
NSData *dataSave = [NSKeyedArchiver archivedDataWithRootObject:items];
[[NSUserDefaults standardUserDefaults] setObject:dataSave forKey:@"tabOrder"];
[[NSUserDefaults standardUserDefaults] synchronize];
NSLog(@"%@",self.tabBarController.viewControllers);
[self.tabBarController setViewControllers:items animated:YES];
}
}
Вот проблема, я в конечном итоге, когда я пытаюсь этот подход: 1. Я не используя отдельные NIB/XIb файлы, но вместо раскадровки 2. self.tabBarController.viewControllers остается пустым, даже при редактировании заказа 3 . Программа не вводит tabBarController '- (void): (UITabBarController *) tabBarController didEndCustomizingViewControllers: (NSArray *) viewControllers changed: (BOOL) изменил {}' функции после завершения редактирования. 4. Я не могу ссылаться на tabBarController из файла приложения delegate.h/.m –