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

#iphone #ios4 #view #themes #uiapplicationdelegate

#iPhone #ios4 #Вид #темы #uiapplicationdelegate

Вопрос:

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

 - (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;
    }    
}
  

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

Спасибо за весь ваш вклад!

Комментарии:

1. Переместите код NSUserDefault в метод applicationDidBecomeActive: , приложение:didFinishLaunching вызывается только при запуске приложения, а не при переключении приложения.

Ответ №1:

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