EditionStyleFroworat IndustryPath - incendies dans iOS 5, ne tire pas dans iOS 6
-
11-12-2019 - |
Question
J'ai un maître simple et des contrôleurs de vue de détail connectés à deux segues, un pour "Afficher les détails" et un pour "Ajouter un nouveau".
- "Afficher détail" Segues au contrôleur de vue détaillé avec la définition: non.
- Tapez sur "+" (Ajouter une icône) Segues au contrôleur de vue de détail avec la définition: Oui
iOS 5.1: "+" fonctionne comme je m'attends, la page de détail est en mode édition et d'éditionStyleFornorTindexpath Feux pour afficher les indicateurs d'insertion et de suppression.
iOS 6.0: Le "+" fait la transition vers la page de détail mais EditionStyleFornorTindexpath ne tire jamais.Autre code qui est dans la définition: oui est exécuté.didSelectrowatidexpath fait le feu (délégué= moi).
Une fois sur la page de détail, le mode édition fonctionne comme prévu dans les deux cas.
Des idées?
// 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]; .... } }
La solution
Je l'ai compris.Je ne sais pas pourquoi c'est la solution, j'espère que cela ne remplace pas de mauvais code avec le pire code.
Master.m
// iOS 5 -- this is OK
detailViewController.editing = YES;
Pour iOS 6, j'avais besoin de la DétailViewController pour appeler une méthode de délégation pour déterminer si la mise en place: Oui.
Master.m
-(BOOL)isNewRecipe {
return (_isNewRecipe == 1);
}
Detail.m
if ([self.delegate isNewRecipe]) {
[self setEditing:YES];
}