presentViewController и отображение панели навигации - PullRequest
84 голосов
/ 15 марта 2012

У меня есть иерархия контроллеров представления, и самый верхний контроллер отображается как модальный и хотел бы знать, как отображать панель навигации при использовании

'UIViewController:presentViewController:viewControllerToPresent:animated:completion'

Документы для 'presentViewController: animated:завершение: 'примечание:

' На 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];

Ответы [ 12 ]

0 голосов
/ 15 марта 2012

Одно решение

DetailViewController *controller = [[DetailViewController alloc] initWithNibName:nil                                                                                 
                                        bundle:[NSBundle mainBundle]];  

UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:controller];
navController.modalTransitionStyle = UIModalTransitionStyleCoverVertical;
navController.modalPresentationStyle = UIModalPresentationCurrentContext;



[self.navigationController presentViewController:navController 
                                        animated:YES 
                                        completion:nil];
0 голосов
/ 15 марта 2012

Если вы не установили свойство modalPresentationStyle (например, UIModalPresentationFormSheet), панель навигации будет отображаться всегда.Чтобы гарантировать, всегда делайте

[[self.navigationController topViewController] presentViewController:vieController 
                                                            animated:YES 
                                                          completion:nil];

. Это всегда будет отображать панель навигации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...