2017-02-02 1 views
0

Ich habe eine andere Frage, die genau die gleiche Frage wie meine, gefragt, aber die Antwort sagte ihnen, die setEditing-Funktion aufzurufen (was ich versuchte, und später in der Frage sagen). Aber ich sehe nicht, wie man diese Funktion nur aufrufen könnte, wenn man auf die Schaltfläche Bearbeiten klickt. Ich nehme an, ich könnte mein eigenes BarButtonItem erstellen und diese Methode ausführen, wenn ich auf die Schaltfläche klicke, aber ich dachte, das wäre viel einfacher, da ich die grundlegenden Funktionen der Bearbeitungsschaltfläche benötige.Bearbeiten-Schaltfläche hat keine Funktionalität, kein roter Kreis mit einem Minus erscheint auf der linken Seite der Zellen

Ich habe einen UIViewController, der eine Tabelle namens peersTable hat. Wenn ich auf die Schaltfläche "Bearbeiten" klicke, wird "Fertig" angezeigt, aber auf dem Tisch passiert nichts. Ich habe auch meine eigenen UITableViewRowActions hinzugefügt und wenn ich nach links auf den Zellen wische, werden meine benutzerdefinierten Aktionen angezeigt.

Hier einige meiner Code:

class PeerViewController: UIViewController, UITableViewDelegate, UITableViewDataSource, ConnectionManagerDelegate { 

@IBOutlet weak var peersTable: UITableView! 
... 

override func viewDidLoad() { 
    ... 
    peersTable.delegate = self 
    peersTable.dataSource = self 

    self.navigationItem.rightBarButtonItem = self.editButtonItem 
    ... 
} 

Ich habe auch versucht, die peersTable.setEditing Aufruf (true, animiert: true) Methode selbst, und in diesem Fall wird die rote minus erscheinen. Ich habe dieses Problem noch nie zuvor gesehen, also verstehe ich nicht, warum es passiert. Setze ich den Delegierten irgendwie falsch? Oder möglicherweise mache ich etwas falsch, da dies eine normale Ansicht und keine TableView ist (obwohl ich das vorher in einem früheren Projekt getan habe).

Vielen Dank im Voraus! Wenn Sie weitere Informationen benötigen, lassen Sie es mich wissen!

+0

ich sah sich auch das gleiche Problem. Ich habe die Tabellenansicht mit der Klasse verbunden, indem ich eine TableView-Eigenschaft in der Klasse wie eine Steckdose erstellt habe. @IBOutlet schwach var productTableView: UITableView! . Die TableView im Storyboard und die TableView-Eigenschaft müssen verbunden sein. Obwohl ich nicht weiß, warum das funktioniert hat. – mumu

+0

@RubaiyatJahanMumu Ich nehme an, Sie meinen durch Strg + Ziehen der TableView in PeerViewController-Klasse, die ich bereits zuvor getan habe "@IBOutlet schwach var peersTable: UITableView!" (und dann als Delegat und Datenquelle festgelegt). Es sei denn, du meintest etwas anderes ... – Logan

+0

Hast du andere Delegate-Methoden implementiert, vor allem 'func tableView (_: editingStyleForRowAt:)'? Wenn ja, müssen Sie '.delete 'hier zurückgeben. –

Antwort

1

Da dies kein TableViewController ist, wird Ihr tableView nicht automatisch in den Bearbeitungsmodus versetzt, wenn Sie die Bearbeitungsschaltfläche drücken.

Sie müssen die Methode setEditing überschreiben, damit Sie tableView in den Bearbeitungsmodus versetzen können.

Fügen Sie diese auf Ihre Viewcontroller Klasse:

override func setEditing(_ editing: Bool, animated: Bool) { 
    super.setEditing(editing, animated: animated) 
    peersTable.setEditing(editing, animated: animated) 
} 
+0

Danke, das hat es behoben! – Logan

Verwandte Themen