2009-09-03 9 views
10

Ho un'app per iphone che utilizza una uitableview in cui vorrei che i controlli "riordina" vengano sempre visualizzati e che l'utente passi le righe per eliminare.scorri per eliminare quando già in modalità di modifica

L'approccio che sto attualmente in corso è quello di mettere la Tableview in modalità di modifica e consentono di selezionare la modalità di modifica

self.tableView.editing = YES; 
self.tableView.allowsSelectionDuringEditing = YES; 

ho poi nascondere il rosso eliminare cerchi usando

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

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

I cant figura fuori come ottenere il gesto di scorrimento per far apparire la "cancellazione" sul lato destro quando la vista tabella è già in modalità di modifica, qualcuno può indicarmi la giusta direzione?

In alternativa, se qualcuno sa come ottenere la cellula riordino controlli per mostrare quando non è in modalità di modifica, che sarebbe anche una soluzione praticabile

applausi

+1

Ho appena pensato di aggiungere che ho svolto un * lotto * di ricerche su questo argomento (ho esattamente lo stesso requisito) e non credo sia possibile senza implementare la tua logica di scorrimento. Inoltre, non credo che sia possibile mostrare i controlli di riordino in modalità non di modifica senza duplicare in modo simile gran parte della logica di Apple. –

+0

Hai fatto questo? – AnjDenny

risposta

1

Quando l'utente swipes su una determinata riga, è è necessario memorizzare un riferimento da qualche parte in modo da poter modificare il valore restituito da editingStyleForRowAtIndexPath e shouldIndentWhileEditingRowAtIndexPath. La soluzione migliore è probabile che utilizzi lo indexPathForCell nella cella che viene strisciata e la memorizzi. Quindi, nei due metodi di visualizzazione sopra indicati, è necessario verificare se lo NSIndexPath è uguale o no (non sono sicuro se saranno lo stesso puntatore o se sarà necessario confrontare i valori della sezione/riga - test richiesto). Se corrispondono, visualizza il pulsante Elimina.

Nota che potrebbe essere necessario chiamare reloadData sul TableView per visualizzare l'effetto senza scorrere e tornare indietro.

1

Mi chiedo se il modo in cui ti stai dirigendo ora infrangerebbe le linee guida dell'interfaccia umana, con il risultato che l'app non viene approvata.

Non riesco a vedere perché non è possibile acquisire il gesto di scorrimento e quindi utilizzarlo per "mostrare" le icone di eliminazione (segno di arresto) rosse per la conferma dell'eliminazione?

Problemi correlati