Я хотел бы создать приложение, как это: разница UI для портретной и альбомной IPad
На Iphone (как в портретной и альбомной ориентации) и Ipad портрету, у меня есть экран просмотра таблицы, нажмите на пункт строки будет перейдите к другому подробному экрану, как и к другому базовому приложению.
Но когда я повернуть экран, чтобы перейти в альбомную на Ipad, экран теперь есть два мнения раздела
Вот что я сделал:
- Напишите метод
isInLandscapeTablet
обнаружить Ipad ландшафту - Используйте
UINavigationController
как корневого контроллер контролировать все другие представления - в портретной экране, нажать ViewController содержит TableView к корневому контроллеру
- в экране планшета ландшафтного, прикрепить контроллер Tableview и подробно контроллер
UISplitViewController
, а затем вставьте его в корневой контроллер
Но проблема в том, что я не могу нажать UISplitViewController укоренить контроллер, так как он требует, чтобы быть корневым контроллером.
Интересно, как я могу справиться с этой проблемой
И мой подход правильный? Есть ли другой путь?
Update: изменить контроллер представления корня, как этого
// this snippet is in UINavigationController (I use as root viewcontroller)
if([self isInTabletLandscape]){
self.splitViewController.viewControllers = [NSArray arrayWithObjects:[[CategoryViewController alloc] initWithNibName:@"CategoryViewController" bundle:nil], self.propertyLandViewController, nil];
[[UIApplication sharedApplication].keyWindow setRootViewController:self.splitViewController];
}else{
// it doesn't work
[[UIApplication sharedApplication].keyWindow setRootViewController:self];
}
}
Вы должны иметь три различных ViewController - 1 для iPhone портрет, 1 для IPad портрет, 1 для IPad пейзаж (с splitViewController) , нажмите правильный контроллер просмотра на базу корневого контроллера на типе устройства и ориентации. Если пользователь повернет iPad, поп в rootViewControler и снова нажмите правильный viewController.Вы можете установить флаг с помощью делегирования в корневой контроллер, чтобы указать, какой viewContoller нужно нажать. – Kilogen9
@ Kilogen9 это то, что я сделал. Но, как я уже сказал, проблема в том, что я не могу подтолкнуть UISplitViewController к корневому контроллеру, поскольку он должен быть корневым контроллером. – R4j
@ R4j - это меню, которое должно быть статичным или всегда показывать в ландшафте? – NorthBlast