#iphone #objective-c #xcode #ios #ipad
#iPhone #objective-c #xcode #iOS #iPad
Вопрос:
Этот вопрос задавался дюжину раз на этом сайте, но я не нашел ответа, который подходит для меня. У меня есть приложение для 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 …] с теми же результатами.
Ответ №1:
Я предполагаю, что self
в вашем примере кода это контроллер просмотра справа (подробно). Вам нужно вызвать presentModalViewController
из корня UISplitViewController
.
Комментарии:
1. @andy У меня это сработало. Вам следует подумать о том, чтобы пометить это как правильное, если это сработало для вас.