Как загружать Storyboard в зависимости от устройства?

Рейтинг: 1Ответов: 1Опубликовано: 13.12.2014

Всем доброго времени суток. В Xcode при создании проекта можно выбрать вариант Universal app, таким образом создается два файла Storyboard, один из них загружается на iPhone, а другой - на iPad. Нужно кое-что подобное: требуется сделать так, чтобы приложение определяло, на каком устройстве оно запущено (или iPhone 6, или iPhone 6 Plus) и для каждого варианта запускало один из Storyboard. Как это реализовать? Помогите, пожалуйста, ничего не нашел на эту тему. Спасибо.

Ответы

▲ 3Принят

Для этих целей в Xcode 6 есть фича под названием Size classes. Вот неплохой туториал http://habrahabr.ru/post/235181/

Если Size classes не подходит можно загружать сториборд вручную и инстанциировать из него нужный вью контроллер:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

    self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];

    UIStoryboard *storyboard;
    if (IS_IPHONE_6) {
        storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
    }
    if (IS_IPHONE_6_PLUS) {
        storyboard = [UIStoryboard storyboardWithName:@"Main_Plus" bundle:nil];
    }
    UIViewController *firstViewController = [storyboard instantiateViewControllerWithIdentifier:@"FirstViewController"];

    [self.window setRootViewController:firstViewController];

    [self.window makeKeyAndVisible];

    return YES;
}

Предварительно удалить имя сториборда в Main interface настроек таргета.

Для инстанциирования вью контроллера, в сториборде нужно указывать Storyboard ID для нужного вью контроллера