Как сделать поповер UIsplitview видимым в портретном режиме iPad - PullRequest
5 голосов
/ 02 сентября 2010

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

Ответы [ 3 ]

4 голосов
/ 27 сентября 2010

Внутри "- (BOOL) shouldAutorotateToInterfaceOrientation", проверьте ориентацию устройства. Если это портрет, то представьте всплывающее окно, как вы делаете, чтобы сделать его видимым, когда пользователь нажимает кнопку панели.

Всего наилучшего.

2 голосов
/ 25 февраля 2011

UISplitViewController отправляет сообщения своему делегату (UISplitViewControllerDelegate).Вы можете реализовать этот метод делегата, чтобы показать поповер.Вы можете сделать что-то вроде этого в вашем коде «детального контроллера»:

#pragma mark -
#pragma mark UISplitViewControllerDelegate implementation
- (void)splitViewController:(UISplitViewController*)svc 
     willHideViewController:(UIViewController *)aViewController 
          withBarButtonItem:(UIBarButtonItem*)barButtonItem 
       forPopoverController:(UIPopoverController*)pc
{  
    [barButtonItem setTitle:@"Your 'popover button' title"];
    self.navigationItem.leftBarButtonItem = barButtonItem;
}


- (void)splitViewController:(UISplitViewController*)svc 
     willShowViewController:(UIViewController *)aViewController 
  invalidatingBarButtonItem:(UIBarButtonItem *)barButtonItem
{
    self.navigationItem.leftBarButtonItem = nil;
}
1 голос
/ 02 декабря 2011

Принятый ответ (с использованием shouldAutorotateToInterfaceOrientation) не работает для меня. У него либо есть артефакты вращения (в симуляторах iPad для 4.2 и 5.0), либо он отображается только при запуске и никогда больше не при последующих вращениях (симулятор 4.3). Вместо этого я создал небольшую вспомогательную функцию:

- (void)showPopoverInPortrait {
    if ([[UIApplication sharedApplication] statusBarOrientation] == UIInterfaceOrientationPortrait) {
        [self.masterPopoverController presentPopoverFromBarButtonItem:self.navigationItem.leftBarButtonItem
                                             permittedArrowDirections:UIPopoverArrowDirectionAny 
                                                             animated:YES];
    }
}

и вызовите это в - (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation и - (void)viewDidLoad, чтобы также обработать при запуске.

...