2017-05-02 4 views
2

Ich mache eine Tabellenansicht und möchte eine Funktion erstellen, in der Sie eine Zeile löschen können, indem Sie nach rechts wischen und auf die Schaltfläche Löschen tippen. Ich und mein Lehrer haben eine halbe Stunde lang versucht, dieses Problem zu beheben, aber nichts scheint zu funktionieren.UITableView Zeile löschen

import UIKit 

class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource { 

    var StoredValues = Values() 
    override func viewDidLoad() { 
     super.viewDidLoad() 
    } 
    override func didReceiveMemoryWarning() {// 
     super.didReceiveMemoryWarning() 
    } 

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 
     return UITableViewCell() 
    } 

    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
     return 1 
    } 
    func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { 
     self.performSegue(withIdentifier: "meunSegue", sender: self) 

     func prepare(for segue: UIStoryboardSegue, sender: Any?) { 
      _ = segue.destination as! SecondViewController 
     } 
    } 
    func tableView->(UITableView *)tableView canEditRowsAtIndexPath:(NSIndexPath *)indexPath { 
    return YES 
    } 
    - (void)tableView:(UITableView *)tableView committEditStyle: (UITableViewCellEditingStyle) 
    func tableView { 
     var cell = UITableView.self 
     var Animation = UITableViewRowAnimation(rawValue: 1) 
     if editingStyle == UITableViewCellEditingStyle.delete { 
      cell.deleteRows(indexPath) 
      //cell.deleteRows(at: [NSIndexPath], with: UITableViewRowAnimation.automatic) 

     } 
    } 


    class SecondViewController: UIViewController { 

     var recievedData = "" 
     override func viewDidLoad() { 
      super.viewDidLoad() 
      print(recievedData) 
     } 
    } 
} 
+0

Ihr Quellcode ist eine seltsame Mischung aus Swift und Objective-C. Sie können Ihren Beispielcode aufräumen, sodass er Ihre Frage mit besserem Code kompiliert und bearbeitet. –

Antwort

0

Dies liegt daran, Ihre numberOfRowsInSection Daten-Source-Implementierung immer 1 zurückgibt (fest).

Normalerweise speichern Sie Objekte in einem Array, das die Anzahl der Zeilen definiert. Und commitEditingStyle sollte das Objekt aus dem Array entfernen und dann die Zeile löschen.

– (void)tableView: (UITableView *)tableView commitEditingStyle: (UITableViewCellEditingStyle)editingStyle forRowAtIndexPath: (NSIndexPath *)indexPath {if (editingStyle == UITableViewCellEditingStyleDelete) { 
     // Delete the row from the data source 
     [maTheData removeObjectAtIndex:[indexPath row]]; 
     // Delete row using the cool literal version of [NSArray arrayWithObject:indexPath] 

     [tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationFade]; 

    } 
} 

diese link, um weitere Informationen folgen.

0

Diese schnelle Funktion kann eine Zeile löschen, indem Sie nach rechts wischen und auf die Schaltfläche Löschen tippen. Eigentlich löscht diese Funktion das Element aus dem Array articles und löscht dann die Zeile. Außerdem wurde diese Reihe von tableView entfernt.

override func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath) { 
    if editingStyle == UITableViewCellEditingStyle.delete { 
     // your items include cell variables 
     items.remove(at: indexPath.row) 
     tableView.deleteRows(at: [indexPath], with: UITableViewRowAnimation.automatic) 
    } 
}