So ändern Sie den Text der Schaltfläche "uitableview delete"


78

Hallo, ich versuche, den Text zu ändern, der in der Schaltfläche "Löschen" angezeigt wird, wenn ein Benutzer eine geeignete Ansichtszelle in meiner Tabellenansicht wischt.

Ich habe ein Beispiel in einem anderen Fragethread gesehen, das besagt, dass dieser Tableview-Delegat verwendet werden soll

- (NSString *)tableView:(UITableView *)tableView titleForDeleteConfirmationButtonForRowAtIndexPath:(NSIndexPath *)indexPath

Meine Frage ist, wie ich diese Methode verwende. Ich bin mir nicht sicher, wie ich diese verwenden soll.

Antworten:


198

In Ihrem Controller, der UITableViewdas verwaltet, sollten Sie das implementieren UITableviewDelegateund den gewünschten Titel für Ihre Methode innerhalb der titleForDeleteConfirmationButtonForRowAtIndexPathMethode zurückgeben.

Beispiel:

@interface CategoryAddViewController : UITableViewController
@end

@implementation CategoryAddViewController
// ...
-(NSString *)tableView:(UITableView *)tableView titleForDeleteConfirmationButtonForRowAtIndexPath:(NSIndexPath *)indexPath {
return @"Please don't delete me!";
}

@end

Lass dich mit so etwas aus:

Geben Sie hier die Bildbeschreibung ein


Großartig, aber warum wird das Erscheinungsbild des Buttons nicht mehr animiert? Nach dem Hinzufügen wird die Schaltfläche zum Löschen angezeigt, anstatt animiert zu werden! Edit: Mein schlechtes, muss ein Sim-Fehler gewesen sein. Nach dem Neustart der App ist es wieder in Ordnung.
Maciej Swic

@FaizanS. Ich untersuche das auch. Gibt es keine Möglichkeit, nur die Eigenschaft zu ändern? So etwas wie ... self.tableView.deleteButton.name = @"Remove";anstatt die Methode zu überschreiben?
Scott

Nicht zum Zeitpunkt des Schreibens. Im iOS SDK werden viele Dinge erreicht, indem vorhandene Methoden von Basis-UI-Klassen überschrieben werden.
Faizan S.

2
der schnelle Weg:func tableView(tableView: UITableView, titleForDeleteConfirmationButtonForRowAtIndexPath indexPath:NSIndexPath) -> String{ return "Remove Me"; }
Datum

1
In dieser Antwort gibt es keinen Grund hinzuzufügen <UITableViewDelegate>.
rmaddy

31

In Swift ist es gleich, nur die Methodensignatur ist anders!

func tableView(tableView: UITableView, titleForDeleteConfirmationButtonForRowAtIndexPath indexPath: NSIndexPath) -> String? {
  return "Erase"
}

4

Geben Sie einfach die Zeichenfolge zurück, die Sie anzeigen möchten, anstatt sie zu löschen. Angenommen, Sie möchten "Löschen" für alle Zeilen anzeigen. Die obige Funktion sollte Folgendes enthalten:

return @"Erase";

Lesen Sie DIESES

Fügen Sie auch in Ihrer .h-Datei das UITableViewDelegate hinzu, falls Ihr View Controller noch kein UITableViewController ist. Das heißt, es kann entweder sein:

@interface SomeView : UIViewController <UITableViewDelegate>

ODER

@interface SomeView : UITableViewController

0

Swift 4.2

override func tableView(_ tableView: UITableView, titleForDeleteConfirmationButtonForRowAt indexPath: IndexPath) -> String? {
        return "Erase"
    }
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.