Como tornar o popover da UISPLITVIEW visível no modo retrato iPad
-
26-09-2019 - |
Pergunta
Gostaria de tornar visível o Popover View sempre que o usuário mudar da vista da paisagem para a visão de retrato no UISPLITVIEL do iPad. Embora o usuário possa torná -lo visível clicando no botão de barra, mas eu quero que isso seja automatizado para o modo retrato.
Solução
Dentro do método " -(bool) deve ser o método da orientação do dispositivo.
Tudo de bom.
Outras dicas
UISPLITVIEWController envia mensagens para seu delegado (UISPLITVIEWControllerDelegate). Você pode implementar esses métodos delegados para mostrar o popover. Você pode fazer algo assim no seu código "Detalhe Controller":
#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;
}
A resposta aceita (usando shouldAutorotateToInterfaceOrientation
) não funciona para mim. Ele possui artefatos de rotação (nos simuladores de iPad 4.2 e 5.0) ou apenas mostram na inicialização e nunca mais em rotações subsequentes (o simulador 4.3). O que eu fiz foi criar uma pequena função ajudante:
- (void)showPopoverInPortrait {
if ([[UIApplication sharedApplication] statusBarOrientation] == UIInterfaceOrientationPortrait) {
[self.masterPopoverController presentPopoverFromBarButtonItem:self.navigationItem.leftBarButtonItem
permittedArrowDirections:UIPopoverArrowDirectionAny
animated:YES];
}
}
e chame isso de dentro - (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation
e - (void)viewDidLoad
Para também lidar com a inicialização.