How to Implement Swipe Left to Right in UITableView Cell similar to iOS Mail
I've found similar solutions but only for a gesture of swiping fromright to left.
SWTableViewCell has all the options you might want.
While dequeing a cell just set up left/right set of buttons as needed.
cell.leftUtilityButtons = [self leftButtons];cell.rightUtilityButtons = [self rightButtons];cell.delegate = self;
And by setting the view controller as its delegate, you can listen to the button clicks.Full details on how to implement are in that link
Ex 1:
Ex 2:
In case you are looking for buttons stacked vertically check out this.
I usually implement it at the table level.
- (void)viewDidLoad{ [super viewDidLoad]; UISwipeGestureRecognizer *recognizer = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(leftSwipe:)]; [recognizer setDirection:(UISwipeGestureRecognizerDirectionLeft)]; [self.tableView addGestureRecognizer:recognizer]; recognizer = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(rightSwipe:)]; recognizer.delegate = self; [recognizer setDirection:(UISwipeGestureRecognizerDirectionRight)]; [self.tableView addGestureRecognizer:recognizer];}
You then have control of the direction and can customize at will
- (void)leftSwipe:(UISwipeGestureRecognizer *)gestureRecognizer{ //do you left swipe stuff here. }- (void)rightSwipe:(UISwipeGestureRecognizer *)gestureRecognizer{ //do you right swipe stuff here. Something usually using theindexPath that you get that way CGPoint location = [gestureRecognizer locationInView:self.tableView]; NSIndexPath *indexPath = [self.tableView indexPathForRowAtPoint:location];}
Credit goes to Jade Mind
Since iOS 11, there are native provisions(delegate methods through UITableViewDelegate
) to enable 'swipe actions' on a UITableView
's cell on both sides:
func tableView(_ tableView: UITableView, leadingSwipeActionsConfigurationForRowAt indexPath: IndexPath) -> UISwipeActionsConfiguration? //For actions at the leftfunc tableView(_ tableView: UITableView, trailingSwipeActionsConfigurationForRowAt indexPath: IndexPath) -> UISwipeActionsConfiguration? //For actions at the right
These methods return a UISwipeActionsConfiguration
that contains an array of UIContextualAction
For a UIContextualAction
, you can specify its title, style, background colour, action colour, or even an UIImage
and handle its callback ( obviously :-) )
Here's a sample implementation:
func tableView(_ tableView: UITableView, trailingSwipeActionsConfigurationForRowAt indexPath: IndexPath) -> UISwipeActionsConfiguration? { let filterAction = UIContextualAction(style: .normal, title: "FILTER") { (action, view, bool) in print("Swiped to filter") } filterAction.backgroundColor = UIColor.blue return UISwipeActionsConfiguration(actions: [filterAction])}
I know this is an old question, but I'm posting this just in case it helps someone randomly passing by...