У меня есть иерархия вид контроллера и самый верхний контроллер отображается как модальный и хотел бы знать, как отобразить панель навигации при использованииpresentViewController и отображение навигационной панели
'UIViewController:presentViewController:viewControllerToPresent:animated:completion'
Документах для «presentViewController : анимированные: завершение: примечание:
«На iPhone и iPod touch представленный вид всегда полный экран. На iPad, презентация зависит от значения в свойстве modalPresentationStyle в . '
Для «modalPresentationStyle», документы говорят:
стильПрезентация определяет способ отображения модально представлен контроллер представления на экране. На iPhone и iPod touch контроллеры модального просмотра всегда представлены в полноэкранном режиме, но на iPad есть несколько различных вариантов презентации.
Есть ли способ убедиться, что панель навигации отображается под панелью состояния после того, как элемент управления отображает сам? Должен ли я интерпретировать документ как, у вас нет никаких вариантов iPhone/iPod и только на iPad?
Раньше я использовал 'UIViewController:presentModalViewController:animated'
, который отлично работал, но с iOS 5.0 API был устаревшим, поэтому я перехожу к новому.
Визуально то, что я хочу сделать, - это включить новый контроллер в нижней части экрана, как это делал старый API.
[обновление с кодом]:
// My root level view:
UIViewController *vc = [[RootViewController alloc]
initWithNibName:nil
bundle:[NSBundle mainBundle]];
navController = [[UINavigationController alloc] initWithRootViewController:vc];
....
// Within the RootViewController, Second view controller is created and added
// to the hierarchy. It is this view controller that is responsible for
// displaying the DetailView:
SecondTierViewController *t2controller = [[SecondTierViewController alloc]
initWithNibName:nil
bundle:[NSBundle mainBundle]];
[self.navigationController pushViewController:t2controller animated:YES];
// Created by SecondTierViewController
DetailViewController *controller = [[DetailViewController alloc] initWithNibName:nil
bundle:[NSBundle mainBundle]];
controller.modalTransitionStyle = UIModalTransitionStyleCoverVertical;
controller.modalPresentationStyle = UIModalPresentationCurrentContext;
[self.navigationController presentViewController:controller
animated:YES
completion:nil];
Это почти то, с чего я начал. Но причина, по которой я не использую 'presentModalViewController', заключается в том, что он отмечен как устаревший API. –
это то, что было написано в классе UIViewController: // Отображение другого контроллера вида в качестве модального дочернего элемента. Использует вертикальный переход листа, если он анимирован. Этот метод был заменен на presentViewController: анимированный: завершение: // Будет DEPRECATED, планируйте соответственно. - (void) presentModalViewController: (UIViewController *) modalViewController анимированный: (BOOL) анимированный; так просто назовите новый метод и передайте nil для завершения, и вы должны быть хорошими. –
Отличный ответ. Обновлено для использования '(void) presentViewController: (UIViewController *) viewControllerToPresent animated: (BOOL) завершение флага: (void (^) (void)) complete' –