iPhone - загрузка настроек из пакета настроек будет обновляться только после отображения / закрытия панели многозадачности

Привет, ребята, я пытаюсь настроить тему и иметь возможность выбирать ее через приложение «Настройки» (набор «Настройки»). У меня есть многозначная настройка с темами. Моя проблема в том, что когда я захожу в приложение настроек, меняю тему и возвращаюсь к приложению, «тема» сначала не применяется, она будет применяться только после того, как я открою/закрою панель многозадачности. Вот с чем я имею дело:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    defaults = [NSUserDefaults standardUserDefaults]; 
    if (![defaults objectForKey:@"UILayout"]) {
        [defaults setObject:@"Bar_Top" forKey:@"UILayout"];
    }
    [defaults synchronize];
    // Override point for customization after application launch.
    self.window.rootViewController = self.viewController;
    [self.window makeKeyAndVisible];
    return YES;
}


- (void)applicationDidBecomeActive:(UIApplication *)application
{
    layout = [defaults valueForKey:@"UILayout"];
    if ([layout isEqualToString:@"Bar_Top"]) {
        NSLog(@"Bar_Top");
        self.viewController.menu.hidden = YES;
        self.viewController.targetOnWebPage.hidden = NO;
        self.viewController.timer.hidden = NO;
        self.viewController.label.frame = CGRectMake(48, 0, 230, 15);
        self.viewController.label.hidden = NO;
    } else if ([layout isEqualToString:@"Bar_Bottom"]) {
        NSLog(@"Bar_Bottom");
        self.viewController.menu.hidden = YES;
        self.viewController.targetOnWebPage.hidden = NO;
        self.viewController.timer.hidden = NO;
        self.viewController.label.frame = CGRectMake(48, 100, 230, 15);
        self.viewController.label.hidden = NO;
    } else if ([layout isEqualToString:@"Menu_Button"]) {
        NSLog(@"Menu_Button");
        self.viewController.menu.hidden = NO;
        self.viewController.targetOnWebPage.hidden = YES;
        self.viewController.timer.hidden = YES;
        self.viewController.label.hidden = YES;
    }    
}

Я также знаю, что у меня должно быть просто два отдельных файла NIB для тем. Однако у меня есть представление, загружающее случайную веб-страницу, и я не хочу ее терять (хотя я мог бы просто сохранить ее до закрытия приложения). Даже если это не два отдельных NIB, будет ли это работать или замедлит работу моего приложения? Должен ли я продолжать и создавать несколько NIB для каждой темы?

Спасибо за все Ваши ответы!


person Alex Muller    schedule 25.04.2011    source источник
comment
Переместите код NSUserDefault в метод applicationDidBecomeActive:, application:didFinishLaunching вызывается только при запуске приложения, а не при переключении приложения.   -  person Marcelo Alves    schedule 25.04.2011


Ответы (1)


Только что нашел ответ на свой вопрос, принудительно синхронизируйте, когда станете активными!

person J George    schedule 16.08.2011