Шаблон SplitViewController показать поповер вручную? - PullRequest
5 голосов
/ 08 октября 2011

Я использую шаблон splitViewController, предоставленный Apple.На конкретном действии я хочу показать rootViewController.К сожалению, я не могу найти метод, который будет отображать всплывающее окно (программно) так же, как при нажатии на элемент панели кнопок.

Есть идеи?Спасибо!

1 Ответ

12 голосов
/ 10 октября 2011

вы можете показать всплывающее окно из barButtonItem или с помощью собственного прямоугольника с помощью этих двух методов:

[self.popoverController presentPopoverFromRect:(CGRect) inView:(UIView *) permittedArrowDirections:(UIPopoverArrowDirection) animated:(BOOL)];
[self.popoverController presentPopoverFromBarButtonItem:(UIBarButtonItem *) permittedArrowDirections:(UIPopoverArrowDirection) animated:(BOOL)]

self.popoverController это мой случай ивара, в котором хранится поповер. Я устанавливаю эту переменную каждый раз в:

- splitViewController:willHideViewController:withBarButtonItem:forPopoverController:

и установите его обратно в nil в методе, аналогичном этому:

- splitViewController:willShowViewController:invalidatingBarButtonItem:

вот мой код:

- (void)splitViewController: (UISplitViewController*)svc willHideViewController:(UIViewController *)aViewController withBarButtonItem:(UIBarButtonItem*)barButtonItem forPopoverController: (UIPopoverController*)pc {
    barButtonItem.title = @"42";
    self.navigationController.navigationBar.topItem.leftBarButtonItem = barButtonItem;
    self.popoverController = pc;
}

- (void)splitViewController: (UISplitViewController*)svc willShowViewController:(UIViewController *)aViewController invalidatingBarButtonItem:(UIBarButtonItem *)barButtonItem {
    self.navigationController.navigationBar.topItem.leftBarButtonItem = nil;
    self.popoverController = nil;
}
...