2010-09-02 10 views

risposta

4

All'interno del metodo "- (BOOL) shouldAutorotateToInterfaceOrientation", verificare l'orientamento del dispositivo. Se è ritratto, quindi Presentare il popover come si fa per renderlo visibile quando l'utente fa clic sul pulsante della barra.

Tutto il meglio.

+0

e questo dovrebbe essere implementato in quale controller di visualizzazione esattamente? – user102008

+0

visualizzazione dettagli controller del controller della vista divisa. Ti auguro il meglio. – gopikrishnan

+0

questo metodo è deprecato in iOS 6. usa 'didRotateFromInterfaceOrientation:' – hop

2

UISplitViewController invia messaggi al proprio delegato (UISplitViewControllerDelegate). È possibile implementare questo metodo delegato per mostrare il popover. Si può fare qualcosa di simile nel codice "Particolare del regolatore":

#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

Tutto ciò che fai in questi delegati mostra un pulsante. L'OP voleva che il popover fosse visibile ruotando in verticale. –

1

La risposta accettata (usando shouldAutorotateToInterfaceOrientation) non funziona per me. Possiede anche artefatti di rotazione (nei simulatori iPad 4.2 e 5.0) o mostra solo all'avvio e mai più nelle rotazioni successive (il simulatore 4.3). Quello che ho fatto invece era quello di creare un po 'di funzione di supporto:

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

e chiamare questo all'interno - (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation e - (void)viewDidLoad per gestire anche all'avvio.

Problemi correlati