Implementiert habe ich editActionsForRowAtIndexPath und commitEditingStyle aber keine Aktionen Bearbeiten angezeigt auf der tableViewCell beim darüberstreichen die Zelle
Ich umgesetzt editActionsForRowAtIndexPath
und commitEditingStyle
das wischen funktioniert, aber keine Aktionen Bearbeiten angezeigt auf der UITableViewCell
meine Umsetzung für editActionsForRowAtIndexPath
und commitEditingStyle
wie folgt:
func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath) {
if editingStyle == UITableViewCellEditingStyle.Delete {
//I did some work here
tableView.deleteRowsAtIndexPaths([indexPath], withRowAnimation: UITableViewRowAnimation.Automatic)
}
}
func tableView(tableView: UITableView, editActionsForRowAtIndexPath indexPath: NSIndexPath) -> [AnyObject]? {
let deleteAction = UITableViewRowAction(style: UITableViewRowActionStyle.Normal, title: "Delete" , handler: { (action:UITableViewRowAction!, indexPath:NSIndexPath!) -> Void in
//I did some work here
tableView.reloadData()
})
return [deleteAction]
}
Jede Hilfe wird dankbar sein
- tun Sie impliemtn canEditRowAtIndexPath zurück JA
- ja, habe ich und es funktioniert in einem anderen viewController ohne die Implementierung canEditRowAtIndexPath
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich denke, du vermischt zwei verschiedene Arten der Bearbeitung hier.
Die erste Art der Bearbeitung ist die alte
UITableViewCellEditingStyle.Delete
. Und der neue Weg ist, um Ihren custom-Zubehör Ansicht.Wenn Sie bei der Umsetzung Ihrer benutzerdefinierten Zubehör anzeigen, dann die Standard-löschen-buttons werden nicht angezeigt, sind also nicht aufgerufen. So Ihr
kann auch nicht aufgerufen werden, aus meiner Sicht.
Apples Dokumentation Für
editActionsForRowAtIndexPath
enthält die folgenden sentense :
If you do not implement this method, the table view displays the standard accessory buttons when the user swipes the row.
ich davon ausgegangen, dass wenn Sie diese Methode implementieren, der standard-Zubehör-Ansicht nicht angezeigt werden.Bearbeiten:
Code-Beispiel (aktualisiert Swift 3 11/17/16)
Edit 2:
Als rajagp Punkte aus, wenn Sie nicht brauchen, eine leere Implementierung, wenn Sie nur auf iOS9 (oder später).
func tableView(tableView: UITableView, editActionsForRowAtIndexPath indexPath: IndexPath) -> [AnyObject]? { let more = UITableViewRowAction(style: .normal, title: "more" , handler: { (action:UITableViewRowAction, indexPath: IndexPath) -> Void in }) return [more] }
aber nicht zeigen mir einmore
Taste, sondern ein Standard -delete
- TasteMüssen Sie implementieren canEditRowAtIndexPath aus der UITableview Delegate-Methoden und true zurückgeben.
Versuchen, fügen Sie einige Aktion in löschen-Taste
TLDR:
Notwendigen Funktionen zu implementieren:
• commitEditingStyle
• canEditRowAt
• editActionsForRowAt
Hinweis: für
editActionsForRowAt
Sie nicht gibt ein leeres array zurück, hier wird es vermasseln alle Zellen. Wenn es eine Besondere Art von Zeile Sie wollen nicht zulassen Bearbeiten von Aktionen für, geben Sie dies incanEditRowAt
false zurückgeben, für diese Art von Zelle.Sorry für das aufwachen so ein Alter thread, aber ich habe es funktioniert auf Swift 3 Umsetzung:
Ich habe gerade kopiert den ViewController, wo die Zeile action buttons werden angezeigt und funktionieren gut, und ersetzen Sie die eine, wo die Reihe-action-Schaltflächen werden nicht angezeigt, beim schieben, und jetzt ist die Reihe von Aktionen-Schaltflächen angezeigt werden und haben das erwartete Verhalten.
Aber ich verstehe nicht das Problem. wer kann das erklären?