2010-09-02 2 views
5

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

ответ

4

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

Все самое лучшее.

+0

, и это должно быть реализовано, в каком виде контроллера? – user102008

+0

Подробный контроллер просмотра вашего контроллера разделенного вида. Всего наилучшего. – gopikrishnan

+0

этот метод был изменен в iOS 6. используйте 'didRotateFromInterfaceOrientation:' – hop

2

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

#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; 
} 
+0

Все, что вы делаете в этих делегатах, показывает кнопку. OP хотел, чтобы popover был видимым при повороте на портрет. –

1

Принятый ответ (используя shouldAutorotateToInterfaceOrientation) не работает для меня. Он либо имеет артефакты вращения (в симуляторах 4.2 и 5.0 iPad), либо показывает только при запуске и никогда не повторится при последующих вращениях (симулятор 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 также обрабатывать при запуске.

 Смежные вопросы

  • Нет связанных вопросов^_^