Gibt es eine Möglichkeit, die Schaltfläche "-" (Löschen) während der Bearbeitung von UITableView auszublenden?


97

Auf meiner iPhone-App habe ich eine UITableView im Bearbeitungsmodus, in der der Benutzer nur die Zeilen neu anordnen darf, ohne dass eine Löschberechtigung erteilt wurde.

Gibt es also eine Möglichkeit, die rote Schaltfläche "-" in TableView auszublenden? Lass es mich wissen, bitte.

Vielen Dank

Antworten:


258

Hier ist meine vollständige Lösung ohne Einrückung (0 links ausrichten) der Zelle!

- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath {
    return YES;
}

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

- (BOOL)tableView:(UITableView *)tableview shouldIndentWhileEditingRowAtIndexPath:(NSIndexPath *)indexPath {
    return NO;
}


- (BOOL)tableView:(UITableView *)tableview canMoveRowAtIndexPath:(NSIndexPath *)indexPath {
    return YES;
}

43

Swift 3 entspricht einer akzeptierten Antwort mit nur den erforderlichen Funktionen:

func tableView(_ tableView: UITableView, shouldIndentWhileEditingRowAt indexPath: IndexPath) -> Bool {
    return false
}

func tableView(_ tableView: UITableView, editingStyleForRowAt indexPath: IndexPath) -> UITableViewCellEditingStyle {
    return .none
}

4

Dies stoppt die Einrückung:

- (BOOL)tableView:(UITableView *)tableview shouldIndentWhileEditingRowAtIndexPath:(NSIndexPath *)indexPath {
    return NO;
}

3

Ich hatte ein ähnliches Problem, bei dem benutzerdefinierte Kontrollkästchen im Bearbeitungsmodus angezeigt werden sollten, nicht jedoch die Schaltfläche "(-)" zum Löschen.

Stefans Antwort lenkte mich in die richtige Richtung.

Ich habe eine Umschalttaste erstellt und sie als EditingAccessoryView zur Zelle hinzugefügt und mit einer Methode verbunden.

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    ....
    // Configure the cell...

    UIButton *checkBoxButton = [[UIButton alloc] initWithFrame:CGRectMake(0.0f, 0.0f, 40.0f, 32.0f)];
    [checkBoxButton setTitle:@"O" forState:UIControlStateNormal];
    [checkBoxButton setTitle:@"√" forState:UIControlStateSelected];
    [checkBoxButton addTarget:self action:@selector(checkBoxButtonPressed:) forControlEvents:UIControlEventTouchUpInside];

    cell.editingAccessoryType = UITableViewCellAccessoryCheckmark;
    cell.editingAccessoryView = checkBoxButton;

    return cell;
}

- (void)checkBoxButtonPressed:(UIButton *)sender {
    sender.selected = !sender.selected;
}

Implementierte diese Delegatenmethoden

- (BOOL)tableView:(UITableView *)tableview shouldIndentWhileEditingRowAtIndexPath:(NSIndexPath *)indexPath {
    return NO;
}

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

0

Wenn Sie den (-) Punkt nur während der Bearbeitung ausblenden möchten, aber die Löschfunktion für die Benutzer beibehalten möchten, implementieren Sie sie wie folgt in Ihrer UITableViewDelegateprotokollkonformen Klasse

- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath {
    if (self.editing) return UITableViewCellEditingStyleNone;
    return UITableViewCellEditingStyleDelete;
}
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.