2010-07-15 17 views
8

Questa è davvero più una curiosità che una domanda di codifica rigida.UITableViewCell Swipe per cassetto

Sia Facebook che Twitter hanno entrambi una funzione in cui strisciare un UITableViewCell anima la cella fuori dal lato per rivelare un cassetto con più controlli sottostanti. Come si realizza qualcosa del genere?

risposta

6

Qui è un ottimo metodo open-source per fare esattamente questo, sulla base del comportamento delle app Twitter:

https://github.com/thermogl/TISwipeableTableView

+0

Funziona per me! :) – AWrightIV

+0

Beh, quasi tutto ha funzionato per me. Sfortunatamente, quel progetto usa metodi deprecati per il disegno. Sono in corso su un'implementazione moderna, quindi forse posterò qualcosa quando sarò soddisfatto. – AWrightIV

+0

Troverai anche un esempio su come rilevare i gesti di scorrimento su un UITableView sul nostro blog http://blog.blackwhale.at/?p=795 – anka

1

Si potrebbe semplicemente implementare -tableView:willBeginEditingRowAtIndexPath: nella propria vista tabella delegato.

From the doc,

Questo metodo viene chiamato quando l'utente passa orizzontalmente attraverso una fila; ... Questo metodo offre al delegato l'opportunità di adattare l'interfaccia utente dell'applicazione alla modalità di modifica.

+0

Questo metodo non aggiunge automaticamente anche un pulsante di cancellazione? Non penso che DVG lo voglia, e so di no. – AWrightIV

+0

Fa automaticamente tutto ciò che viene fornito nel delegato per il parametro tableView: (UITableView *) tableView editingStyleForRowAtIndexPath: (NSIndexPath *) indexPath' – superhawk610

+1

Quindi se restituite 'UITableViewCellEditingStyleNone' a quel metodo, non eseguirà alcuna azione automatica, permettendoti di fare come preferisci :) – superhawk610

3

2 modi per rilevare l'azione swipt

  1. sguardo al metodo UITableViewCell willTransitionToState:. questo metodo verrà richiamato quando si fa scorrere verso la cella.

  2. Custom swipe detection in a TableViewCell

e quindi è possibile modificare la visualizzazione delle cellule facilmente.

+0

Il rilevamento del colpo è la parte facile. È l'animazione scorrevole e mostra una visione separata che è difficile. – AWrightIV

1

Come un UITableViewCell è solo un UIView, è possibile utilizzare questo fatto per fare praticamente tutto ciò che ti piace con esso.

Per risolvere il problema, aggiungerei uno UISwipeGestureRecognizer per rilevare lo scorrimento e quindi animare la visualizzazione in uno stato diverso.

Ad esempio, è possibile creare una cella personalizzata con la visualizzazione del contenuto che si trova sopra la "visualizzazione azioni". Ogni volta che si esegue uno scorrimento, si utilizza un'animazione UIView per spostare la vista del contenuto da parte e mostrare invece la vista di azione con un paio di pulsanti. In un UITableViewCell personalizzato è possibile aggiungere un protocollo delegato per fare in modo che l'azione venga eseguita e che la cella venga inviata al delegato, ovvero il proprio controller. Lì scatenerebbe ciò che mai deve essere innescato e quindi la transizione dalla cella fuori dallo stato.

+0

Le visualizzazioni secondarie possono esistere al di fuori del contentView di UITableViewCell? Non ho potuto ottenere questo metodo per funzionare. – AWrightIV

+0

Sì, non ci può. Il pulsante Elimina e le visualizzazioni di sfondo sono solo due esempi. –

5

Questo è un problema che ho provato un paio di soluzioni diverse per. Mi è piaciuto molto il comportamento di Mailbox (mailboxapp.com). Così ho deciso di raggiungere questo obiettivo. Alla fine ho finito con quello che credo sia una soluzione molto semplice: utilizzare un UIScrollView all'interno della vostra cella. Ho un blog post che discute e uno sample app che dimostra questo comportamento.

+0

Sembra ovvio, grazie per la punta! –

Problemi correlati