Авто вращающийся Ipad суб просмотров - PullRequest
0 голосов
/ 23 августа 2010

У меня есть большое приложение, над которым я работаю, которое имеет основное представление, называемое корневым представлением, с панелью инструментов вверху для управления программой. Существует ряд дополнительных представлений, которые накладываются на «корневой» вид, но оставляют видимой панель инструментов. Существует всплывающее меню, которое управляет тем, какой подвид отображается над «корневым» видом. Обратите внимание, я не использую контроллер splitview.

Чтобы сэкономить ресурсы, я инициализирую различные подвиды, когда их функция выбирается из меню в первый раз. Все подвиды были разработаны в IB. Когда ipad находится в портретном режиме при первом выборе подменю, все функции автоповорота работают очень хорошо, однако, когда ipad находится в горизонтальной ориентации, когда приложение запускается впервые и подпрограммы запускаются впервые, они не поворачиваются и не отображаются в обрезанный портретный режим. Похоже, они не знают, что iPad повернут.

Если я инициализирую все вложенные представления из «корневого» метода viewDidLoad, все они будут вращаться правильно, независимо от того, в какой ориентации находится ipad при запуске. Так что, если я инициализирую подпредставления до того, как «корневое» представление станет видимым, тогда все будет хорошо. Если я инициализировал их после того, как «корневое» представление стало видимым, дочерние представления не будут автоматически поворачиваться.

Поскольку здесь задействовано много кода, я надеюсь, что объяснил это достаточно ясно, чтобы кто-то с большим опытом или проницательностью мог направить меня на правильный путь.

Спасибо, Джим

1 Ответ

2 голосов
/ 02 ноября 2010

Джим, При добавлении подпредставлений в основное окно UIWindow, изменение порядка их добавления может повлиять на то, как эти представления зависят от начальной ориентации устройства.Например, в приложении с контроллером навигации (созданным в коде) и контроллером представления (созданным в IB) следующий код будет отображаться правильно независимо от начальной ориентации:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {    
        UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:viewController];

        [self.window addSubview:navigationController.view];
        [self.window addSubview:viewController.view];
        [self.window makeKeyAndVisible];

        return YES;
}

Однако, следующеефрагмент кода будет испорчен при запуске приложения в альбомном режиме (обратите внимание на порядок вызовов addSubview в окне):

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {    
 UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:viewController];

        [self.window addSubview:viewController.view];
        [self.window addSubview:navigationController.view];
        [self.window makeKeyAndVisible];

        return YES;
}

Я бы попытался изменить порядок добавления подпредставлений.Надеюсь, это поможет!

...