Программное создание раскадровки в appdelegate

Я решил использовать разные раскадровки для ios6 и ios7, поэтому мне нужно создать экземпляр раскадровки в коде. У меня есть этот метод в делегате приложения - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

но ничего не происходит, всегда просто создается раскадровка с именем iPadStoryboard при запуске на симуляторе iPad я удалил основной интерфейс из info.plist. Есть идеи, что здесь происходит?

- (void)loadStoryboards
{
    CGSize iOSDeviceScreenSize = [[UIScreen mainScreen] bounds].size;

    UIStoryboard *mainStoryboard = nil;
    if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"6.0"))

        NSLog(@"1");
        if (iOSDeviceScreenSize.height == 480)
        {
            mainStoryboard = [UIStoryboard storyboardWithName:@"MainStoryboard_iPhone-ios5" bundle:nil];
        } else {
            NSLog(@"loading iPad storyboard");
            mainStoryboard = [UIStoryboard storyboardWithName:@"iPadStoryboardOS6" bundle:nil];
        }

    if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"7.0"))

        NSLog(@"2");
        if (iOSDeviceScreenSize.height == 480)
        {

            mainStoryboard = [UIStoryboard storyboardWithName:@"MainStoryboard_iPhone" bundle:nil];
        } else {
            mainStoryboard = [UIStoryboard storyboardWithName:@"iPadStoryboard" bundle:nil];
        }


    self.initialViewController = [mainStoryboard instantiateInitialViewController];
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    self.window.rootViewController = self.initialViewController;
    [self.window makeKeyAndVisible];
}

person Tom Lilletveit    schedule 16.09.2013    source источник
comment
Похоже, вам не хватает фигурных скобок вокруг обеих проверок версии системы.   -  person neilco    schedule 17.09.2013
comment
neilco: большое спасибо! их отсутствие создает действительно странное поведение.   -  person Tom Lilletveit    schedule 17.09.2013
comment
Не беспокойся, @tom-lilletveit. Код внутри оператора if всегда должен быть заключен в фигурные скобки, если он многострочный. На самом деле, как общее правило стиля, я говорю, что все операторы if должны использовать фигурные скобки. Я считаю, что это помогает удобочитаемости.   -  person neilco    schedule 17.09.2013
comment
Вы выполнили код в отладчике, чтобы убедиться, что mainStoryboard назначен iPadStoryboardOS6?   -  person Chris Truman    schedule 17.09.2013


Ответы (1)


Будьте осторожны при проверке iPad. Высота экрана 480px не покрывает iPhone5. Использовать:

if([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad)
person Dominic    schedule 17.09.2013