#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:
Только что нашел ответ на свой вопрос, принудительно запустите синхронизацию, когда вы станете активными!