Поповер не отображается правильно

Я слежу за демонстрацией того, как скрыть левую сторону разделенного вида, когда iPad находится в книжном режиме, и затем показать его как всплывающее окно, когда нажата кнопка на панели инструментов. Я следовал всем шаг за шагом, и это работает (вроде), за исключением того, что когда я нажимаю кнопку, а не в Popover, вид отображается скользящим слева направо. Я также заметил, что могу получить тот же результат, проводя пальцем слева направо вместо нажатия кнопки. Это код, который я использую (тот же код работает правильно в демо).

в View Controller вида, который должен отображаться в Popover:

-(BOOL)splitViewController:(UISplitViewController*)svc
  shouldHideViewController:(UIViewController*)vc
             inOrientation:(UIInterfaceOrientation)orientation
{
    return [self splitViewBarButtonItemPresenter] ? UIInterfaceOrientationIsPortrait(orientation) : NO;
}

-(void)splitViewController:(UISplitViewController *)svc
    willHideViewController:(UIViewController *)aViewController
         withBarButtonItem:(UIBarButtonItem *)barButtonItem
      forPopoverController:(UIPopoverController *)pc
{
    barButtonItem.title = self.title;
    [self splitViewBarButtonItemPresenter].splitViewBarButtonItem = barButtonItem;
}

-(void)splitViewController:(UISplitViewController *)svc
    willShowViewController:(UIViewController *)aViewController
 invalidatingBarButtonItem:(UIBarButtonItem *)barButtonItem
{
    [self splitViewBarButtonItemPresenter].splitViewBarButtonItem = nil;
}

И в представлении, которое должно отображать Popover:

-(void)setSplitViewBarButtonItem:(UIBarButtonItem *)splitViewBarButtonItem
{
    if (_splitViewBarButtonItem != splitViewBarButtonItem){
        NSMutableArray *toolbarItems = [self.toolbar.items mutableCopy];
        if (_splitViewBarButtonItem) [toolbarItems removeObject:_splitViewBarButtonItem];
        if (splitViewBarButtonItem) [toolbarItems insertObject:splitViewBarButtonItem atIndex:0];
        self.toolbar.items = toolbarItems;
        _splitViewBarButtonItem = splitViewBarButtonItem;
    }
}

SplitViewBarButtonItemPresenter это просто протокол, используемый для делегирования, который должен показывать (как вы уже догадались!) кнопку для всплывающего окна.

0 ответов

Другие вопросы по тегам