У меня возникла та же проблема, и я считаю, что это ошибка Apple (я подал ее месяц назад без ответа от них.) Для меня это был именно «подробный» вид, который был пустым при запуске приложения в ориентации UIInterfaceOrientationLandscapeRight (3). Это будет выглядеть так: http://d.pr/cGcU. Это произойдет, когда я ограничу один из двух контроллеров представления (скажем, RootViewController) только в альбомной ориентации:
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
return UIInterfaceOrientationIsLandscape(interfaceOrientation);
}
При этом во время инициализации подробного представления произойдет следующее:
2010-11-15 20:17:47.792 MultipleDetailViews[96250:207] firstDetailViewController willAnimateRotationToInterfaceOrientation: 3 (landscape)
2010-11-15 20:17:47.792 MultipleDetailViews[96250:207] self.view.hidden is: 0
2010-11-15 20:17:47.799 MultipleDetailViews[96250:207] rotating...
2010-11-15 20:17:47.848 MultipleDetailViews[96250:207] firstDetailViewController didRotateFromInterfaceOrientation
2010-11-15 20:17:47.849 MultipleDetailViews[96250:207] self.view.hidden is: 1
По какой-то причине подробное представление таинственно скрывалось при повороте на ориентацию 3. Пока Apple не исправит эту ошибку (в 3.2 это не происходит), мой обходной путь в настоящее время заключается в переопределении следующего метода в контроллере подробного представления -отображение вида после завершения вращения:
- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation
{
self.view.hidden = NO;
}
РЕДАКТИРОВАТЬ : Если ваш подробный вид не является прямым подпредставлением splitViewController.view
(например, вы используете UINavigationController
), вам нужно будет установить hidden
в самом верхнем представлении на сторона детали в пределах UISplitViewController
:
- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation
{
// Make sure you set splitViewController via an outlet or get it via your AppDelegate
for (UIView *splitViewChild in splitViewController.view.subviews)
splitViewChild.hidden = NO;
}