Como hacer popover de UIsplitview visible en modo vertical iPad
-
26-09-2019 - |
Pregunta
Me gustaría hacer popover ver visibles cada vez que el usuario cambia de opinión del paisaje a la vista vertical en UIsplitView de IPAD. Aunque el usuario puede hacerlo visible haciendo clic en botón de la barra pero yo quiero que esto sea automatizado para el modo de retrato.
Solución
Dentro - método "(BOOL) shouldAutorotateToInterfaceOrientation", cheque para el dispositivo orientation.If es retrato, luego presentar el popover como lo hace para lo que es visible cuando el usuario hace clic botón de la barra
.Todo lo mejor.
Otros consejos
UISplitViewController envía mensajes a su delegado (UISplitViewControllerDelegate). Puede implementar estos métodos de delegado para mostrar el popover. Usted puede hacer algo como esto en su código de "controlador de detalle":
#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;
}
La respuesta aceptada (usando shouldAutorotateToInterfaceOrientation
) no funciona para mí. Es bien tiene artefactos de rotación (en el 4,2 y 5,0 iPad simuladores) o sólo muestra en el arranque y nunca más en rotaciones posteriores (el simulador de 4,3). Lo que hice en cambio, fue para crear un poco de función auxiliar:
- (void)showPopoverInPortrait {
if ([[UIApplication sharedApplication] statusBarOrientation] == UIInterfaceOrientationPortrait) {
[self.masterPopoverController presentPopoverFromBarButtonItem:self.navigationItem.leftBarButtonItem
permittedArrowDirections:UIPopoverArrowDirectionAny
animated:YES];
}
}
y llamar a esto dentro de - (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation
y - (void)viewDidLoad
a manejar también en el arranque.