2016-03-30 8 views
0

Ich bin ein UITableViewController in meiner App implementieren und ich möchte eine Möglichkeit zum Verschieben/Wischen einer Zelle auf meinem Tableview hinzufügen, genau wie in dieser Antwort: Swipe-able Table View Cell in iOS 9 aber mit einem Unterschied, dass es nur für eine bestimmte Zelle funktioniert, nicht alle von ihnen. Bisher habe ich:Gibt es eine Möglichkeit, EditActionsForRowAtIndexPath nur für eine bestimmte UITableViewCell in Swift zu implementieren?

class MyTableViewController: UITableViewController { 



override func tableView(tableView: UITableView, canEditRowAtIndexPath indexPath: NSIndexPath) -> Bool { 
    return true 
} 

override func tableView(tableView: (UITableView!), commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: (NSIndexPath!)) { 

} 

override func tableView(tableView: UITableView, editActionsForRowAtIndexPath indexPath: NSIndexPath) -> [UITableViewRowAction]? { 

    var deleteAction = UITableViewRowAction(style: .Default, title: "Hello There!") {action in 
     print("some action!!") 
    } 

    return [deleteAction] 
} 

} 

und es fügt die swiping für alle Zellen und ich möchte es nur hinzufügen, in die 3. auf meiner Liste (Zellen werden nicht dynamisch generiert). Gibt es eine Möglichkeit, das zu tun?

Antwort

2

Sie können die indexPath der Zelle, die als Parameter angegeben ist, überprüfen und die entsprechende Antwort basierend darauf zurückgeben. Außerdem können Sie den Typ Ihrer Zelle mit func cellForRowAtIndexPath(_ indexPath: NSIndexPath) -> UITableViewCell? überprüfen, wenn Sie andere Zellen haben.

Indexpfad ist eine Klasse. Sie können den Index der aktuellen Zeile aus dem Indexpfad mithilfe von indexPath.row abrufen.

override func tableView(tableView: UITableView, canEditRowAtIndexPath indexPath: NSIndexPath) -> Bool { 
    if ((indexPath.row % 3) == 0) { 
     return true 
    } else { 
     return false 
    } 
} 
+0

aber ist die 'ein int indexPath', die ich zu Nummer 3 vergleichen? oder wie genau könnte ich das in diesem Fall machen? – randomuser1

+1

Sie können 'indexPath.row' mit 3 – dan

+0

Ok vergleichen, also habe ich:' if (indexPath.row == 2) {var deleteAction = UITableViewRowAction (...} else {return nil} 'aber immer noch ist es möglich zu gleiten Jede Zelle. Mit dieser Lösung in meiner dritten Zelle sehe ich die Zeichenfolge 'Hallo! 'und wenn ich die anderen ziehe, sehe ich die Zeichenfolge' Löschen '. Gibt es eine Möglichkeit, die Möglichkeit, die anderen Zellen zu verschieben, vollständig zu entfernen? :) – randomuser1

Verwandte Themen