C'è un modo per nascondere il pulsante "-" (Elimina) durante la modifica di UITableView


97

Sulla mia app per iPhone, ho un UITableView in modalità di modifica, in cui all'utente è consentito solo di riordinare le righe senza l'autorizzazione di eliminazione.

Quindi c'è un modo in cui posso nascondere il pulsante rosso "-" da TableView. Per favore mi faccia sapere.

Grazie

Risposte:


258

Ecco la mia soluzione completa, senza indentazione (0left align) della cella!

- (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 equivalente alla risposta accettata con solo le funzioni necessarie:

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

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

4

Questo interrompe il rientro:

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

3

Ho riscontrato un problema simile in cui volevo che le caselle di controllo personalizzate venissero visualizzate in modalità Modifica ma non il pulsante di eliminazione "(-)".

La risposta di Stefan mi ha indirizzato nella giusta direzione.

Ho creato un pulsante di attivazione / disattivazione e l'ho aggiunto come editingAccessoryView alla cella e l'ho collegato a un metodo.

- (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;
}

Implementato questi metodi delegato

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

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

0

Quando vuoi solo nascondere il punto (-) durante la modifica ma potresti voler mantenere la funzionalità di eliminazione per gli utenti che implementi in questo modo nella tua UITableViewDelegateclasse conforme al protocollo

- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath {
    if (self.editing) return UITableViewCellEditingStyleNone;
    return UITableViewCellEditingStyleDelete;
}
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.