модальный UINavigationController внутри UIPopoverViewController - PullRequest
1 голос
/ 07 сентября 2011

Это моя ситуация:

У меня есть UINavigationViewController (со стеком UITableViewControllers), который находится внутри UIPopoverViewController.Вот как это выглядит сейчас:

image

Then one of the buttons there have this action:

MyViewController *moveViewcontroller = [[MyViewController alloc] init];
moveViewcontroller.contentSizeForViewInPopover = self.contentSizeForViewInPopover;

UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:moveViewcontroller];
navController.toolbarHidden = NO;
navController.navigationBarHidden = NO;
navController.contentSizeForViewInPopover = self.navigationController.contentSizeForViewInPopover;
navController.modalPresentationStyle = UIModalPresentationCurrentContext;//to show it inside the popover

[self.navigationController presentModalViewController:navController animated:YES];
[navController release];
[moveViewcontroller release];

Which shows the navigation controller but it not embedded in the `UIPopoverController like the navigation controller in the first picture. This is what I get:

Не очень приятно и не согласуется с предыдущим интерфейсом Есть ли способ сделать мой модальный навигационный контроллер встроенным в UIPopoverController?

По сути, я хочу реализовать аналогичный интерфейс, как в Mail.app в iPhone (при перемещении писем из одной папки в другую), но внутри всплывающего окна.

1 Ответ

0 голосов
/ 13 октября 2011

Вам необходимо указать стиль презентации для UIViewController, который вы представляете модально. Я делаю это, используя следующий код:

MyViewController* mvc = 
[[MyViewController alloc]
 initWithNibName:@"MyViewController"
 bundle:nil];
mvc.modalPresentationStyle = UIModalPresentationFormSheet;
mvc.contentSizeForViewInPopover = CGSizeMake(320.0f, 210.0f);
[self.navigationController pushViewController:mvc animated:YES];

Ключевая строка имеет отношение к modalPresentationStyle - что заставляет модальный контроллер вида появляться внутри UIPopoverController

...