Об этом десятки раз спрашивали на этом сайте, но я не нашел ответ, который мне подходит.У меня есть приложение для iPad с UISplitViewController на корневом уровне, которое создается программно.Внутри представления, отображаемого на правой панели, которое запускается при взаимодействии с пользователем, программно создается UINavigationController и представляется ему.Вот этот код:
listenerController = [[UINavigationController alloc] initWithRootViewController:listenerView];
[listenerController.navigationBar setTintColor:[UIColor colorWithRed:185.0f/255.0f green:80.0f/255.0f blue:0.0f/255.0f alpha:1.0f]];
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
[listenerController setModalPresentationStyle:UIModalPresentationFormSheet];
[listenerController setModalTransitionStyle:UIModalTransitionStyleCrossDissolve];
[listenerController setModalInPopover:YES];
}
[self presentModalViewController:listenerController animated:YES];
[listenerController release];
Это действительно создает контроллер представления должным образом, но когда он отображается, iPad возвращается в портретную ориентацию независимо от того, в какой ориентации у меня iPad. Затем, когда я отклоняюмодальное окно, оно будет вращаться назад.
У меня уже есть shouldAutorotateToInterfaceOrientation в viewcontroller правой панели, установленной в YES, и я даже попытался добавить это в основной класс делегатов приложения без какой-либо удачи.Не похоже, что мне нужно было бы создавать подкласс UINavigationController просто для того, чтобы переопределить метод shouldAutorotateToInterfaceOrientation.
Вызываю ли presentModalViewController из неправильного объекта?Я попытался [self presentModalViewController ...], а также [self.parentViewController presentModalViewController ...] с теми же результатами.