Editingstyleforweat Indexpath: incendi in iOS 5, non spara in iOS 6
-
11-12-2019 - |
Domanda
Ho semplici controller di visualizzazione master e dettagli collegati con due segmenti, uno per "Mostra dettagli" e uno per "Aggiungi nuovo".
- .
- "Mostra dettaglio" Segues al controller di visualizzazione dei dettagli con set heeteting: no.
- Toccare "+" (aggiungi icona) Segues al controller di visualizzazione dettagliata con Setatiting: Sì
iOS 5.1: "+" funziona come mi aspetto, la pagina dei dettagli è in modalità Modifica e editingStyleForthOwATINDEXPath Spaces per mostrare gli indicatori Inserisci ed Elimina.
iOS 6.0: il "+" rende la transizione verso la pagina dei dettagli ma editingstyleforrowreatindexpath non si spara mai.Altro codice che è in seturazione: sì viene eseguito.DidSecTrowaTindexpath fa fuoco (delegato= sé).
Una volta sulla modalità di modifica della pagina dei dettagli funziona come previsto in entrambi i casi.
Qualche idea?
.// 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]; .... } }
Soluzione
L'ho capito.Non so perché questa è la correzione, spero che questo non sostituisca il codice cattivo con il codice peggiore.
Master.m
// iOS 5 -- this is OK
detailViewController.editing = YES;
.
Per iOS 6 Avevo bisogno del dettaglioViewController per effettuare una chiamata a un metodo delegato per determinare se impostare: Sì.
Master.m
-(BOOL)isNewRecipe {
return (_isNewRecipe == 1);
}
Detail.m
if ([self.delegate isNewRecipe]) {
[self setEditing:YES];
}
.