Chiamando direttamente metodi delegato UITableViews
-
26-09-2019 - |
Domanda
Ero alla ricerca di un modo per chiamare direttamente il metodo di modifica.
- (void)tableView:(UITableView *)theTableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
Ho tutta la mia logica per animare le cellule manipolate, di togliere dal mio allineamento modello ecc in questo metodo. E 'sempre chiamato quando un utente fendenti, aggiunge o riordina, ma vorrei chiamare manualmente / direttamente come un thread in background cambia il mio modello.
Ho costruito un NSIndexPath in questo modo:
NSIndexPath *path = [NSIndexPath indexPathForRow:i inSection:1];
non riesco proprio a capire come chiamare qualcosa come:
[self.tableview commitEditingStyle:UITableViewCellEditingStyleDelete forRowAtIndexPath:path];
Devo guadagnare l'accesso ai metodi di questo UITableView stile normale in un altro modo?
Grazie:)
Soluzione
Non vedo il motivo per cui non si può chiamare tale metodo, se invece si è per il vostro codice da eseguire. La documentazione danno un tocco pesante che
- (void)setEditing:(BOOL)editing animated:(BOOL)animate
avrà l'effetto di chiamare quel metodo fonte di dati in ogni caso. Avrebbe più senso di refactoring il codice da quel metodo in un altro metodo e chiamare sia dal metodo di fonte dei dati e da altrove nel codice, se è veramente quello che vuoi fare.
Se si vuole veramente per riflettere solo i cambiamenti nel modello, quindi chiamare [tableView reloadData]
-. Questo è ciò che è per
Altri suggerimenti
Non so per certo, ma forse se si chiama il metodo
- (void)setEditing:(BOOL)editing animated:(BOOL)animate
potrebbe essere, che il metodo viene chiamato commitEditingStyle.