Pergunta

Eu tenho controladores simples de visualização mestre e detalhada conectados com dois segues, um para "mostrar detalhes" e outro para "adicionar novo".

  • "Mostrar detalhes" segue para o controlador de visualização de detalhes com setEditing:NO.
  • Toque em "+" (adicionar ícone) para seguir para o controlador de visualização de detalhes com setEditing:YES

iOS 5.1:"+" funciona como esperado, a página de detalhes está no modo de edição e editandoStyleForRowAtIndexPath é acionado para mostrar os indicadores de inserção e exclusão.

iOS 6.0:o "+" faz a transição para a página de detalhes, mas editStyleForRowAtIndexPath nunca é acionado.Outro código que está em setEditing:YES é executado.didSelectRowAtIndexPath dispara (delegate = self).

Uma vez na página de detalhes, o modo de edição funciona conforme esperado em ambos os casos.

Alguma ideia?

// Master.m
if([[segue identifier] isEqualToString:@"NewRecipe"]) {

    DetailViewController *detailViewController = [segue destinationViewController];
    // stuff
    detailViewController.recipe = r;     
    detailViewController.delegate = self;
    detailViewController.editing = YES;
}


// Detail.m
-(void)setEditing:(BOOL)flag animated:(BOOL)animated {

   if (flag) {

   [self.tableView setEditing:flag animated:YES];
   [self.tableView beginUpdates];
   // the row does get added
   [self.tableView insertRowsAtIndexPaths:@[pathToAdd] withRowAnimation:UITableViewRowAnimationAutomatic];  
    // datasource gets updated here
    [self.tableView endUpdates];
    .... 
    }
}
Foi útil?

Solução

Eu descobri.Não sei por que essa é a solução, espero que isso não substitua o código ruim por um código pior.

 Master.m
// iOS 5 -- this is OK
detailViewController.editing = YES;

Para iOS 6, eu precisava que o detailViewController fizesse uma chamada para um método delegado para determinar se setEditing:YES.

Master.m
-(BOOL)isNewRecipe {
    return (_isNewRecipe == 1);
}

Detail.m
if ([self.delegate isNewRecipe]) {
    [self setEditing:YES];        
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top