Problema do iOS7 com o controle de visualização modal segue da seleção de célula personalizada

Edição final

Depois de mais investigações, achei que seria melhor repassar a questão com mais informações sobre a questão específica.

Esse problema parece ocorrer apenas no iOS7. Eu testei no iOS6 e isso funciona sem problemas.

- Setup A configuração é que você tem umUIViewController (primeiro VC, por exemplo), isso contém um tableView e é o datasource / delegate. Quando a célula em tableView é selecionada / tocada, você executa um segue para o Segundo Controlador de Visualização (isso pode estar vazio por enquanto).

Questão

A questão é que o segue não ocorre imediatamente. Dentro de um segundo como esperado. Não há dados sendo passados ​​no segue ou qualquer coisa sendo carregada no segundo controlador de visualização, portanto você espera que seja instantâneo.

Às vezes, isso funcionará bem sem problemas. Outras vezes, você clicará na célula e nada acontecerá.

Tendência Noticiada O que eu notei é que quando o 'problema' ocorre. O simulador / dispositivo aguardará até o próximo minuto começar a forçar a carga do controlador de exibição modal. OU Quando o problema ocorrer, você poderá clicar / tocar novamente em qualquer lugar na tela do dispositivo para "forçar" a carga.

O problema pode ser reproduzido em um novo projeto apenas com o básico. Eu tenhocarregou um exemplo de zip do projeto que inclui este.

Código adicional (se necessário)

Eu tenho uma configuração de célula personalizada. Quando a célula é selecionada, eu faço o seguinte:

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    NSLog(@"%s",__PRETTY_FUNCTION__);

    if (indexPath.section == 0) {
        [self performSegueWithIdentifier:@"selectGameTurnDiff" sender:self];
    } 
}

Então eu tenho o seguinte no prepareForSegue:

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
    NSLog(@"%s",__PRETTY_FUNCTION__);
    [super prepareForSegue:segue sender:sender];
}
Exploração madeireira

Aqui estão alguns logs de exemplo para mostrar isso: Run 1
2013-10-09 23: 54: 09.855 App [14954: a0b] - [FirstViewController tableView: didSelectRowAtIndexPath:]
2013-10-09 23: 54: 09.857 App [14954: a0b] - [FirstViewController prepareForSegue: remetente:]
2013-10-09 23: 55: 00.004 App [14954: a0b] - [SecondViewController viewDidLoad]
2013-10-09 23: 55: 00.004 App [14954: a0b] - [SecondViewController viewWillAppear:]
2013-10-09 23: 55: 00.511 App [14954: a0b] - [SecondViewController viewDidAppear:]

Executar 2
2013-10-09 23: 56: 21.900 App [14954: a0b] - [FirstViewController tableView: didSelectRowAtIndexPath:]
2013-10-09 23: 56: 21.901 App [14954: a0b] - [FirstViewController prepareForSegue: remetente:]
2013-10-09 23: 57: 00.003 App [14954: a0b] - [SecondViewController viewDidLoad]
2013-10-09 23: 57: 00.003 App [14954: a0b] - [SecondViewController viewWillAppear:]
2013-10-09 23: 57: 00.508 App [14954: a0b] - [exibição de SecondViewControllerDidAppear:]

Executar 3
2013-10-09 23: 57: 43.387 App [14954: a0b] - [FirstViewController tableView: didSelectRowAtIndexPath:]
2013-10-09 23: 57: 43.388 App [14954: a0b] - [FirstViewController prepareForSegue: remetente:]
2013-10-09 23: 58: 00.004 App [14954: a0b] - [SecondViewController viewDidLoad]
2013-10-09 23: 58: 00.004 App [14954: a0b] - [Visualização do SecondViewControllerWillAppear:]
2013-10-09 23: 58: 00.510 App [14954: a0b] - [exibição do SecondViewControllerDidAppear:]

questionAnswers(1)

yourAnswerToTheQuestion