views:

104

answers:

3

This is really more of a curiosity than a hard coding question.

Both Facebook and Twitter both have a feature where swiping a UITableViewCell animates the cell off the side to reveal a drawer with more controls underneath. How is something like that accomplished?

+1  A: 

You could just implement -tableView:willBeginEditingRowAtIndexPath: in your table view delegate.

From the doc,

This method is called when the user swipes horizontally across a row; ... This method gives the delegate an opportunity to adjust the application's user interface to editing mode.

KennyTM
A: 

2 ways to detect swipt action

  1. look at the willTransitionToState: method of UITableViewCell. this method will be invoked when you swipe at the cell.

  2. Custom swipe detection in a TableViewCell

and then you can change your cell view easily.

xhan
A: 

As a UITableViewCell is just a UIView, you can use this fact to basically do anything you like with it.

To solve your problem, I'd attach a UISwipeGestureRecognizer to detect the swipe and then animate the view to a different state.

For example, you could create a custom cell that has it's content view laying above the "actions view". Whenever there is a swipe, you use a UIView animation to move the content view aside and show the action view with a couple of buttons instead. In a custom UITableViewCell you could add a delegate protocol to have the pressed action and the cell being sent to the delegate, i.e. your controller. There you'd trigger what ever there is to trigger and then transition the cell out of the state.

Max Seelemann