У меня есть SplitviewController
с несколькими возможными Detailviews
(Webviews
, Tableviews
, обычный UIViews
).
В качестве примера, у меня есть NavigationController
сверху, а затем перемещаться по некоторым таблицам.
Наконец, я показываю Content
, скажем, UIWebview
. Я поворачиваю iPad в портретное положение и на панели инструментов добавляю Button
, из которого отображается popOverController
.
Вкл. Buttonclick
Я говорю:
if (!popoverController) {
if (self.view.window != nil) {
popoverController = [[UIPopoverController alloc] initWithContentViewController: [appDelegateiPad naviPad]];
popoverController.delegate = self;
}
}
Здесь я создаю экземпляр PopOverController
, а Content
- это левая часть splitview, с точки, которую я остановил. Все хорошо.
Но когда я поворачиваюсь, я получаю это предупреждение:
CoreAnimation: ignoring exception: Popovers cannot be presented from a view which does not have a window.
И на экране снова появляется popOverController с пустым содержимым (я бы сказал, полупрозрачным черным), но я не знаю почему, так как я отклонил его, и не может быть другого экземпляра, поскольку я создаю только один при нажатии кнопки.
Это сводило меня с ума в течение многих дней.
ЛЮБАЯ (!) Помощь приветствуется!
-(void) showPopOver:(id) sender {
NSLog(@"showing popover?");
if (!popoverController) {
if (self.view.window != nil) {
popoverController = [[UIPopoverController alloc] initWithContentViewController:[appDelegateiPad naviPad]];
//RootViewController *r = [[RootViewController alloc] initWithNibName:@"RootViewController" bundle: nil];
// popoverController = [[UIPopoverController alloc] initWithContentViewController:r];
//popoverController.popoverContentSize = CGSizeMake(320, 800);
//popoverController.delegate = self;
}
}
if (![popoverController isPopoverVisible]) {
[popoverController presentPopoverFromBarButtonItem:barButton3 permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
//[popoverController presentPopoverFromRect:CGRectMake(10, 10, 20, 20) inView:self.view permittedArrowDirections:UIPopoverArrowDirectionRight animated:YES];
}
else {
[popoverController dismissPopoverAnimated:NO];
}
}