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.

questionAnswers(6)

yourAnswerToTheQuestion