Controladores de modo restrito - como exibir e descartar
Eu estou quebrando a cabeça pela última semana em como resolver o problema mostrando e dispensando vários controladores de visão. Eu criei um projeto de amostra e colando o código diretamente do projeto. Eu tenho 3 controladores de visualização com seus arquivos .xib correspondentes. MainViewController, VC1 e VC2. Eu tenho dois botões no controlador de visualização principal.
- (IBAction)VC1Pressed:(UIButton *)sender
{
VC1 *vc1 = [[VC1 alloc] initWithNibName:@"VC1" bundle:nil];
[vc1 setModalTransitionStyle:UIModalTransitionStyleFlipHorizontal];
[self presentViewController:vc1 animated:YES completion:nil];
}
Isso abre o VC1 sem problemas. No VC1, tenho outro botão que deve abrir o VC2 e, ao mesmo tempo, dispensar o VC1.
- (IBAction)buttonPressedFromVC1:(UIButton *)sender
{
VC2 *vc2 = [[VC2 alloc] initWithNibName:@"VC2" bundle:nil];
[vc2 setModalTransitionStyle:UIModalTransitionStyleFlipHorizontal];
[self presentViewController:vc2 animated:YES completion:nil];
[self dismissViewControllerAnimated:YES completion:nil];
} // This shows a warning: Attempt to dismiss from view controller <VC1: 0x715e460> while a presentation or dismiss is in progress!
- (IBAction)buttonPressedFromVC2:(UIButton *)sender
{
[self dismissViewControllerAnimated:YES completion:nil];
} // This is going back to VC1.
Eu quero voltar para o controlador de visão principal enquanto ao mesmo tempo VC1 deveria ter sido removido da memória para o bem. O VC1 só deve aparecer quando eu clico no botão VC1 no controlador principal.
O outro botão no controlador de visualização principal também deve ser capaz de exibir o VC2 ignorando diretamente o VC1 e deve retornar ao controlador principal quando um botão é clicado no VC2. Não há código de execução longa, loops ou timers. Apenas chamadas de ossos para ver os controladores.