2016-03-31 35 views
0

Grundsätzlich habe ich eine benutzerdefinierte Tabellenansicht Zelle, die potenzielle Mitarbeiter auflistet. Diese Zelle enthält einige Beschriftungen und eine Schaltfläche. Was ich will, ist für die Taste, um die Zelle zu entfernen, aber alles, was ich finden kann, ist dies:Aus Warteschlange mit Schaltfläche in der Tabellenansicht Zelle

override func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath) { 
if editingStyle == UITableViewCellEditingStyle.Delete { 
    numbers.removeAtIndex(indexPath.row)  
    tableView.deleteRowsAtIndexPaths([indexPath], withRowAnimation: UITableViewRowAnimation.Automatic) 
} 

}

, die nur Sie die Zelle löschen können, wenn Sie dann streichen Sie wählen „Löschen“

Ich denke, ich sollte eine Funktion in meiner TableViewController.swift-Datei erstellen, die die Zelle in einer bestimmten Zeile löschen, und in meiner benutzerdefinierten Zellklasse eine IBAction erstellen, die diese Funktion aufrufen wird.

Wie sieht die Funktion zum Löschen einer Zelle in einer gegebenen Zeile aus? Aber weiß die Zelle in diesem Fall auch, in welcher Zeile sie sich befindet, oder ist das ein Job für den TableViewController?

+0

Siehe dies: http://StackOverflow.com/Questions/8983094/How-to-enable-Swipe-To-Delete-Cell-in-Atableview – Koen

Antwort

1
  1. In Ihrem cellForRowAtIndexPath setzen die cell.button.tag = indexPath.row

  2. ein Ziel der Schaltfläche Hinzufügen: cell.button addTarget:...

  3. In der Schaltfläche Methode, entfernen Sie das Element in Ihrem dataArray bei Index button.tag. Dann aktualisieren Sie die Tableview self.tableView reloadData

1

Sie können die Tag-Eigenschaft von UIButton verwenden Sie den Index der Zelle zu speichern, die Sie löschen möchten, und dass die Tag-Eigenschaft in dem Handler verwenden, um die richtige Zelle zu lokalisieren. In meinem Beispielcode habe ich nur eine Annahme gemacht , dass Sie nur einen Abschnitt haben, deshalb ist es auf Null gesetzt.

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell 
{ 
    ... 
    ... 
    cell.button.tag = indexPath.row 
    let tapGesture = UITapGestureRecognizer(target: self, action: Selector("handleDeleteTap:")) 
    cell.button.addGestureRecognizer(tapGesture) 

} 

func handleDeleteTap(sender: UITapGestureRecognizer) 
{ 
    if let button = sender.view as? UIButton 
    { 
    let indexPath = NSIndexPath(forRow: button.tag, inSection: 0) 
    tableView.deleteRowsAtIndexPaths([indexPath], withRowAnimation: UITableViewRowAnimation.Automatic) 
    } 
} 
1

1) Sie haben eine Aktion für die Schaltfläche in cellForRowAtIndexPath definieren:

... 
myButton.addTarget(self, action: "buttonTappedDelete:", forControlEvents: .TouchUpInside) 
... 

2) Sie haben die Wähler zu implementieren:
2.1) Holen Sie die Zelle, in der der Knopf befindet .
2.2) Ermitteln Sie den Indexpfad der Zelle.
2.3) Entfernen Sie die Zelle aus der Tabellenansicht und aktualisieren Sie Ihre Daten.

Verwandte Themen