prepareForSegue llamado antes didSelectRowAtIndexPath solo cuando se agrega el tercer segue

Tengo 3 segues a 3 vistas diferentes. 2 se implementan sin problemas, es cuando se crea el tercero cuando se producen los problemas.

Tengo el siguiente método didSelectRowAtIndexPath:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
    NSLog(@" ----------  did select row");

    if(indexPath.section == 0){
        if(indexPath.row == [self.data count]-1){
            //prior to adding this, everything works
            [self performSegueWithIdentifier:@"MoreComments" sender:self];
        }else{
            [self performSegueWithIdentifier:@"FriendView" sender:friend];
        }
    }else if(indexPath.section == 1){
        if(indexPath.row == [self.data2 count]-1){
            [self performSegueWithIdentifier:@"MorePosts" sender:self];
        }else{
            [self performSegueWithIdentifier:@"FriendView" sender:friend];
        }
    }
}

Tengo el siguiente método prepareForSeque:

-(void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
    if([segue.identifier isEqualToString:@"MorePosts"]){
        MorePostsViewController *mfamvc = segue.destinationViewController;
        mfamvc.data = self.data;
    }else if([segue.identifier isEqualToString:@"FriendView"]){
        FriendViewController *fvc = segue.destinationViewController;
        fvc.friend = friend;
    }else if([segue.identifier isEqualToString:@"MoreComments"]){
          MoreCommentsViewController *mcvc = segue.destinationViewController;
          mcvc.data = self.data2;
    }
}

Antes de arrastrar el control de mi celda a la última vista, puedo ver que mi programa hace clic en didselectrow y luego en prepare forseque. Esto hace que toda la navegación de la vista funcione perfecto.

Tan pronto como controlo el arrastre de mi celda al MoreCommentsViewController, comienzo a ver el error:

la animación de inserción anidada puede dar como resultado una barra de navegación dañada. Terminar una transición de navegación en un estado inesperado. El árbol de subvista de la barra de navegación podría dañarse.

Me doy cuenta de que ahora también se está llamando dos veces a prepareforseque, que se llama primero a prepare forsequeque, luego se seleccionó una nueva línea y luego se preparó a la segunda.

¿Qué estoy haciendo mal para ir condicionalmente a estas diferentes vistas?

Respuestas a la pregunta(2)

Su respuesta a la pregunta