Как правильно создать экземпляр PopoverController - PullRequest
2 голосов
/ 23 января 2011

У меня есть 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];
}


}
...