Esta resposta está relacionada às perguntas feitas nos comentários da postagem do OP:
Para forçar uma visualização a aparecer em uma determinada orientação, coloque o seguinte em viewWillAppear:
UIApplication* application = [UIApplication sharedApplication];
if (application.statusBarOrientation != UIInterfaceOrientationPortrait)
{
UIViewController *c = [[UIViewController alloc]init];
[self presentModalViewController:c animated:NO];
[self dismissModalViewControllerAnimated:NO];
}
É um pouco hack, mas isso força o UIViewController
a ser apresentado em retrato, mesmo se o controlador anterior fosse paisagem
ATUALIZAÇÃO para iOS7
Os métodos acima agora estão obsoletos, portanto, para iOS 7, use o seguinte:
UIApplication* application = [UIApplication sharedApplication];
if (application.statusBarOrientation != UIInterfaceOrientationPortrait)
{
UIViewController *c = [[UIViewController alloc]init];
[c.view setBackgroundColor:[UIColor redColor]];
[self.navigationController presentViewController:c animated:NO completion:^{
[self.navigationController dismissViewControllerAnimated:YES completion:^{
}];
}];
}
Curiosamente, no momento da escrita, quer no presente ou descartar deve ser animada. Caso contrário, você receberá uma tela branca. Não tenho ideia de por que isso faz funcionar, mas funciona! O efeito visual é diferente dependendo de qual é animado.