2017-02-13 4 views
0

Als Standardverhalten, wenn Sie eine einzelne Zelle der Tabellenansicht löschen möchten, werden Sie auf die Schaltfläche Löschen links von cel tippen, die Schaltfläche zum Löschen Bestätigung wird rechts neben der Zelle angezeigt und dann fortfahren Wenn Sie auf diese Schaltfläche tippen, wird diese Zeile gelöscht. Für dieses Verhalten müssen Sie 2 Schritte haben, um eine Zeile zu löschen. Gibt es eine Möglichkeit, nur auf die Schaltfläche Löschen (links neben der Zelle) zu tippen, um die Zelle zu löschen, ohne auf die Bestätigungsschaltfläche zu tippen?UITableView anpassen löschen Schaltfläche Funktion

+0

Welche Taste nach links? Mach bitte einen Screenshot. – Vahid

+0

Sie können eine Schaltfläche in Ihrer Tabellenzelle hinzufügen, indem Sie das Symbolsymbol löschen, und dann die benutzerdefinierte Methode zum Löschen von Tabellenzeilen erstellen. –

+0

Das ist die Lösung in meinem Kopf. Aber ich bin mir nicht sicher, ob das der beste Weg ist und freue mich auf eine bessere Lösung. –

Antwort

0

Meinen Sie löschen die Zeile nur mit dem Swapping nach links? Ignorieren Sie die Schaltfläche zum Löschen?

könnten Sie verwenden UISwipeGestureRecognizer, wie folgt aus:

class YourViewController: UITableViewController { 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     var swipe = UISwipeGestureRecognizer(target: self, action: #selector(self.didSwipe)) 
     self.tableView.addGestureRecognizer(swipe) 
    } 

    func didSwipe(recognizer: UIGestureRecognizer) { 

     if swipe.state == UIGestureRecognizerState.Ended { 

      let swipeLocation = swipe.locationInView(self.tableView) 

      if let swipedIndexPath = tableView.indexPathForRowAtPoint(swipeLocation) { 

       if let swipedCell = self.tableView.cellForRowAtIndexPath(swipedIndexPath) { 

        self.cellObjectsArray.remove(at: swipedIndexPath.row) 
        tableView.deleteRows(at: [swipedIndexPath], with: .fade) 
       } 
      } 
     } 
    } 

} 
+0

Frager fragt, ** Gibt es einen Weg kann nur auf die linke Taste tippen, um die Zelle zu löschen, ohne auf die Bestätigungsschaltfläche zu tippen? ** nicht _delete die Zeile nur mit dem Swapping left_ –

+0

Entschuldigung für die verspätete Antwort. Ich möchte die Löschfunktion, die nur 1 Tippen auf die Schaltfläche zum Löschen auf der linken Seite der Zelle benötigen, keine Notwendigkeit, weiter auf die Bestätigungsschaltfläche auf der rechten Seite der Zelle zu tippen. Als Standardverhalten müssen Sie 2 Schritte haben, um eine Zeile zu löschen. –

+0

Wenn das der Fall ist, mache ich Vahids Frage zu meiner eigenen: _Welche Taste? Machen Sie einen Screenshot please._ Soweit ich weiß Standard Verhalten wischen nach links und dann Bestätigung der Schaltfläche löschen. –

0

Sie die Zelle Methoden durch die Umsetzung der folgenden Delegierten löschen können, aber das ist ein zweistufiger Prozess,

  1. Swipe die Zelle um die Löschbestätigungstaste auf der rechten Seite zu finden
  2. Klicken Sie auf Löschen (commitEditingStyle wird angerufen werden)

Wenn Sie es in einem einzigen Schritt tun wollen/klicken, eine benutzerdefinierte Schaltfläche in UITableViewCell und in seinen Wählern erhalten hinzufügen die indexpath von UITableViewCell und das Objekt aus Datenquelle löschen und neu zu laden Tabelle, Dies ist vergleichbar mit dem Code implementiert in commitEditingStyle Methode.


- (NSString *)tableView:(UITableView *)tableView titleForDeleteConfirmationButtonForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    return @"Delete"; 
} 

-(UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    return UITableViewCellEditingStyleDelete; 
} 

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    //Delete the object at `indexPath` from datasource 
    //Update UI, by reloading section/entire table 
} 
Verwandte Themen