Как: Получить порядок вкладок, сохранить в NSUserDefaults, а затем получить - PullRequest
2 голосов
/ 13 сентября 2011

У меня есть UITabBarApplication по умолчанию с представлениями и вкладками по умолчанию ... и т. Д. У меня есть восемь вкладок, которые имеют настраиваемый параметр, поэтому пользователи могут изменять порядок вкладок.

Как получить порядок вкладок, сохранить его в NSUserDefaults и получить его, когда приложение снова загрузится.Я хотел бы увидеть несколько примеров кода.

Вот где я сейчас нахожусь:

- (void)applicationWillTerminate:(UIApplication *)application {
    /*
     Called when the application is about to terminate.
     See also applicationDidEnterBackground:.
     */
    NSMutableArray *vcArray = [NSMutableArray arrayWithCapacity:8];
    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:8];
    NSArray *defaultOrder = tabBarController.viewControllers;

    for (int i =0; i < 8; i++){
        for (UIViewController *theVC in defaultOrder) {
            if ([theVC.title isEqualToString:[tabLayout objectAtIndex:i]]) {
                [orderedLayout addObject:theVC];
            }
        }
    }

    tabBarController.viewControllers = orderedLayout;
}

Этот код не работает в симуляторе.Я переупорядочиваю вкладки и нажимаю «Готово», затем останавливаю приложение, но когда я нажимаю «Сборка» и запускаю снова, приложение возвращается к значению по умолчанию.Почему код выше не работает?

Спасибо.

1 Ответ

2 голосов
/ 13 сентября 2011

Один комментарий:

NSUserDefaults не всегда работает с симулятором. Если вы делаете новую сборку каждый раз, то, конечно, все сбрасывается.

Два предложения:

  1. поместите NSLog в последний метод, чтобы убедиться, что он вызывается

  2. создайте приложение на устройстве, переместите вкладки, закройте приложение (полностью - не только в фоновом режиме), снова откройте приложение, посмотрите, что происходит.

...