Come implementare
Sembra che iOS 8 apra questa API. Suggerimenti di tale funzionalità sono presenti in Beta 2.
Per far funzionare qualcosa, implementa i seguenti due metodi sul delegato di UITableView per ottenere l'effetto desiderato (vedi gist per un esempio).
- tableView:editActionsForRowAtIndexPath:
- tableView:commitEditingStyle:forRowAtIndexPath:
Problemi noti
La documentazione dice tableView: commitEditingStyle: forRowAtIndexPath è:
"Non chiamato per le azioni di modifica usando UITableViewRowAction - verrà invece invocato il gestore dell'azione."
Tuttavia, lo scorrimento non funziona senza di essa. Anche se lo stub del metodo è vuoto, ne ha ancora bisogno, per ora. Questo è ovviamente un bug in beta 2.
fonti
https://twitter.com/marksands/status/481642991745265664
https://gist.github.com/marksands/76558707f583dbb8f870
Risposta originale: https://stackoverflow.com/a/24540538/870028
Aggiornare:
Codice di esempio con questo funzionamento (In Swift): http://dropbox.com/s/0fvxosft2mq2v5m/DeleteRowExampleSwift.zip
Il codice di esempio contiene questo metodo facile da seguire in MasterViewController.swift e solo con questo metodo si ottiene il comportamento mostrato nella schermata OP:
override func tableView(tableView: UITableView, editActionsForRowAtIndexPath indexPath: NSIndexPath) -> [AnyObject]? {
var moreRowAction = UITableViewRowAction(style: UITableViewRowActionStyle.Default, title: "More", handler:{action, indexpath in
println("MORE•ACTION");
});
moreRowAction.backgroundColor = UIColor(red: 0.298, green: 0.851, blue: 0.3922, alpha: 1.0);
var deleteRowAction = UITableViewRowAction(style: UITableViewRowActionStyle.Default, title: "Delete", handler:{action, indexpath in
println("DELETE•ACTION");
});
return [deleteRowAction, moreRowAction];
}