2009-07-22 17 views
5

Ho un UITableView e voglio fornire all'utente la funzionalità per eliminare la riga quando si infila o fa scorrere il dito sulla riga. Conosco lo stile di modifica che fornisce un pulsante rosso circolare con il segno -ve su di esso. Ma come implementare lo stile flicking. Ho visto molte applicazioni usarlo, così Apple fornisce qualsiasi delegato integrato per esso o abbiamo bisogno di scrivere il nostro controller per questo.Come eliminare una riga di un tavolo in iPhone

+0

puoi dirmi il metodo Lo sai già? perchè voglio implementarlo. – rptwsthi

risposta

32

Al fine di ottenere il colpo effetto è necessario implementare il delegato vista tabella metodo

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath 

, questo fornirà l'accesso alla interazione magnetica per l'eliminazione. In genere fornisco un'interazione di modifica anche per le visualizzazioni di tabelle in cui è possibile eseguire l'eliminazione poiché l'interazione di scorrimento tende ad essere un po 'nascosta agli utenti.

Per fare un esempio:

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath { 
    [tableView beginUpdates];  
    if (editingStyle == UITableViewCellEditingStyleDelete) { 
    // Do whatever data deletion you need to do... 
    // Delete the row from the data source 
    [tableView deleteRowsAtIndexPaths:[NSArray arrayWithObjects:indexPath, nil] withRowAnimation:UITableViewRowAnimationTop]; 
    }  
    [tableView endUpdates]; 
} 

Speranza che aiuta.

+0

non so come ringraziare u mate .... – WaaleedKhan

+1

withRowAnimation: YES è sbagliato, dovresti usare un enum ad es. withRowAnimation: UITableViewRowAnimationTop – ozba

+0

Considera di cambiare '... UITableViewRowAnimationTop];' a '... UITableViewRowAnimationAutomatic];'. Questo è stato fatto con una modifica non valida (avrebbe dovuto essere un commento), quindi l'ho ripristinato. Se questo è corretto, considera di aggiornare la tua soluzione di conseguenza. –

2

Sono quasi sicuro che esiste un'applicazione di esempio che esegue questa operazione. Una risposta più concreta arriverà presto.

AGGIORNAMENTO: iPhoneCoreDataRecipes fornisce probabilmente esattamente quello che stai cercando.

Sul tema, qui è uno dei metodi più dolci forniti:

// If I want to delete the next 3 cells after the one you click 
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    NSMutableArray* indexPaths = [NSMutableArray array]; 
    for (int i = indexPath.row + 3; i < indexPath.row + 3; i++) 
    { 
    [indexPaths addObject:[NSIndexPath indexPathForRow:i inSection:0]]; 
    } 

    [tableView beginUpdates]; 
    [tableView deleteRowsAtIndexPaths:indexPaths withRowAnimation:UITableViewRowAnimationFade]; 
    [tableView endUpdates]; 
    [tableView deselectRowAtIndexPath:indexPath animated:YES]; 
} 

penso che ci sia un modo più semplice per ottenere ciò che si vuole, ma poi di nuovo questo è abbastanza facile. L'unica difficoltà potrebbe essere cancellarsi ... stai attento ai segreti.

Problemi correlati