2010-09-17 22 views
10

Il passaggio per eliminare la funzionalità non funziona nella visualizzazione tabella. Ho implementato il delegato commitEditingStyle e il pulsante Modifica nella barra di navigazione. Quindi quando l'utente fa clic sul pulsante di modifica, i pulsanti Elimina e aggiungi vengono visualizzati in modo appropriato. Tuttavia, durante lo scorrimento, il pulsante Elimina non viene visualizzato e sembra che non riconosca lo scorrimento come una chiamata per il metodo setEditing.Scorri per eliminare non funziona

Ho poi implementato willBeginEditingRowAtIndexPath e didEndEditingRwoAtIndexPath delegati come segue:

-(void)tableView:(UITableView*)tableView willBeginEditingRowAtIndexPath:(NSIndexPath *)indexPath 

{ 
NSLog(@"WILL BEGIN EDITING"); 

[self.tableView setEditing:YES animated:YES]; 

} 


-(void)tableView:(UITableView*)tableView didEndEditingRowAtIndexPath:(NSIndexPath *)indexPath 

{ 

[self.tableView setEditing:NO animated:YES]; 

} 

Tuttavia questo non deve alcun effetto neanche. Quale potrebbe essere il possibile problema? Ho abilitato il multi-touch per la vista tabella nell'IB e ogni cella ha un accessorio DetailDisclosureButton.

risposta

7

Per colpo-to-delete funzionalità, è necessario implementare

-(void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    if (editingStyle == UITableViewCellEditingStyleDelete) 
     ; // Delete. 
} 

EDIT: non ho letto la questione abbastanza bene.

Ho notato che per eseguire un trascinamento del dito nel simulatore devo premere e mettere in pausa per un secondo mentre seleziona la cella, e solo allora posso scorrere a destra con successo.

+0

Sì, l'ho implementato. L'ho menzionato sopra. Non ho accesso a un dispositivo in questo momento e così sto testando il simulatore. Potrebbe essere un problema con il simulatore? – Nathan

+0

Così l'hai fatto. Scusate. Controlla la mia risposta modificata per ogni evenienza. Il simulatore non ha un comportamento da 1 a 1, in particolare la velocità. –

+0

Provato quello sul simulatore. Non funziona Inoltre ha installato l'app su un iPod Touch in esecuzione 3.1.2. Scorri per eliminare non funziona anche in questo. Molto sconcertante. Mi chiedo se mi sto perdendo qualche implementazione delegata? – Nathan

0

ti è implementare il metodo tableView:editingStyleForRowAtIndexPath: e farlo tornare UITableViewCellEditingStyleDelete

+0

Sì, l'ho fatto. Ma c'era qualcosa in più che ha causato questo problema. – Nathan

+0

controlla la mia risposta sopra. – Nathan

+0

contento di essere riuscito a farti vedere il codice giusto .. il debug di problemi come questo di solito sono difficili –

4

stavo facendo quanto segue nella tableView: editingStyleForRowAtIndexPath: metodo delegato: -

if (self.editing == NO || !indexPath) 
{ 
    return UITableViewCellEditingStyleNone; 
} 

Questo doveva tornare editing stile nessuno se non è stato selezionato indexPath. Per qualche ragione ogni volta che veniva eseguita un'azione di scorrimento, questa particolare condizione veniva eseguita. Nel commentare lo snippet di codice sopra riportato, lo scorrimento per eliminare l'azione ha funzionato correttamente.

Grazie a tutti per il vostro aiuto.

4

Avrai bisogno di implementare:

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


- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath; 

- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath; 

Con queste tre cose che si dovrebbe essere pronti per partire. . (Ho perso fuori commitEditingStyle e mai lavorato

+1

Ho dato questi 3 metodi delegati ma, non funzionante. –

1

La chiave per farlo funzionare è quello di implementare:

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

E ricordatevi di metterlo dentro "UITableViewDataSource" invece di "UITableViewDelegate"

-2

-(void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath metodo delegato anche bisogno di implementare la funzionalità di lavorare colpo.

4

Se tutti gli altri consigli fanno Non cercare di verificare se nel tuo codice è presente il riconoscimento di gesture di pan. Non funzionerà se hai cose come questa in alcune viste di sottofondo.

+0

Aveva lo stesso problema, ma era con UITapGesture –

+0

Sei un genio! Ho avuto un problema con uno slider difficile da trascinare per alcuni mesi e ora con un tableviewCell, e il problema era un riconoscitore di gesture pan in un framework che stavo usando. –

Problemi correlati