Home

Awesome

<a href="https://www.simform.com/"><img src="https://github.com/SimformSolutionsPvtLtd/SSToastMessage/blob/master/simformBanner.png"></a>

SSMultiSwipeCellKit

Multi Cell selection for UITableView with sliding animation

Swift Version Build Status Carthage compatible SPM compatible License PRs Welcome Platform

<!--[![CocoaPods][cocoapods-version][cocoapods-version-link]-->

SSMultiSwipeCellKit provides feature for UITableView to select multiple cell at once with beautiful sliding animations.

Features

🎬 Preview

Leading actionsTrailing actions

Installation

CocoaPods

CocoaPods is a dependency manager for Cocoa projects. You can install it with the following command:

$ gem install cocoapods

To integrate SSMultiSwipeCellKit into your Xcode project using CocoaPods, specify it in your Podfile:

source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '15.0'
use_frameworks!

target '<Your Target Name>' do
    pod 'SSMultiSwipeCellKit'
end

Then, run the following command:

$ pod install

Carthage

Carthage is a decentralized dependency manager that builds your dependencies and provides you with binary frameworks. To integrate SSMultiSwipeCellKit into your Xcode project using Carthage, specify it in your Cartfile:

github "SimformSolutionsPvtLtd/SSMultiSwipeCellKit" ~> 1.0.0

Run carthage update --use-xcframeworks to build the framework and drage the built SSMultiSwipeCellKit.framework into your Xcode project.

Swift Package Manager

The Swift Package Manager is a tool for automating the distribution of Swift code and is integrated into the swift compiler.

Once you have your Swift package set up, adding SSMultiSwipeCellKit as a dependency is as easy as adding it to the dependencies value of your Package.swift.

dependencies: [
    .package(url: "https://github.com/SimformSolutionsPvtLtd/SSMultiSwipeCellKit.git", .upToNextMajor(from: "1.0.0"))
]

How it works:

  1. Assign our custom class SSTableView to you UITableView
Screenshot
  1. Confirm the SSTableCellDelegate methods
extension ViewController: SSTableCellDelegate {
    
    func leadingSwipeActions(_ tableView: UITableView, leadingSwipeActionsConfigurationForRowAt indexPath: IndexPath) -> SSSwipeConfiguration? {
        let a1 = SSSwipeAction(image: nil, text: "Queue", completion: { indexPaths in
            // use selected indexPaths for leading action 1
        })
        let a2 = SSSwipeAction(image: UIImage(named: "archive"), text: nil, completion: { indexPaths in
           // use selected indexPaths for leading action 2
        })
        let a3 = SSSwipeAction(image: UIImage(named: "select"), text: "select", completion: { indexPaths in
           // use selected indexPaths for leading action 3
        })
        a1.backgroundColor = .cyan
        a2.backgroundColor = .darkGray
        a3.backgroundColor = .green
        
        return SSSwipeConfiguration(actions: [a3, a2, a1])
    }
    
    func trailingSwipeActions(_ tableView: UITableView, trailingSwipeActionsConfigurationForRowAt indexPath: IndexPath) -> SSSwipeConfiguration? {
        
        let a4 = SSSwipeAction(image: UIImage(named: "trash"), text: "remove", completion: { indexPaths in
           // use selected indexPaths for trailing action 1
        })
        let a5 = SSSwipeAction(image: UIImage(named: "tick"), text: nil, completion: { indexPaths in
           // use selected indexPaths for trailing action 2
        })
        let a6 = SSSwipeAction(image: nil, text: "snooze", completion: { indexPaths in
           // use selected indexPaths for trailing action 3
        })
        a4.backgroundColor = .red
        a5.backgroundColor = .brown
        a6.backgroundColor = .systemIndigo
        
        return SSSwipeConfiguration(actions: [a6, a5, a4])
    }
    
}
  1. Create a customr table cell and set the cell delegate as self when returning cellForRowAt and you are good to go 👍
class TableCell: SSTableCell {}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    guard let cell = table.dequeueReusableCell(withIdentifier: AppIdentifiers.tableCell.identifier, for: indexPath) as? TableCell else {
        return UITableViewCell()
    }
    cell.configureCell(data: tableItems[indexPath.row])
    cell.delegate = self
    return cell
}

How to customize swipe action threshold values :

    tableView.secondSwipeThreshold = 30
    tableView.thirdSwipeThreshold = 60

How to customize leading and trailing action views:

    let action = SSSwipeAction(image: UIImage(named: "trash"), text: "remove", completion: { indexPaths in
       // use selected indexPaths for trailing action 1
    })
    action.backgroundColor = .red    
    guard let cell = table.dequeueReusableCell(withIdentifier: AppIdentifiers.tableCell.identifier, for: indexPath) as? TableCell else {
        return nil
    }
    let action = SSSwipeAction(image: UIImage(named: "trash"), text: "remove", completion: { indexPaths in
       // use selected indexPaths for trailing action 1
    })
    action.actionIndicatorViewSize = cell.frame.height / 2
    let action = SSSwipeAction(image: UIImage(named: "trash"), text: "remove", completion: { indexPaths in
       // use selected indexPaths for trailing action 1
    })
    action.actionIndicatorIconOffset = 10

Find this library useful? ❤️

Support it by joining stargazers for this repository.⭐

🤝 How to Contribute

Whether you're helping us fix bugs, improve the docs, or a feature request, we'd love to have you! 💪 Check out our Contributing Guide for ideas on contributing.

Check our other Libraries:

Bugs and Feedback

For bugs, feature requests, and discussion please use GitHub Issues.

License

Distributed under the MIT license. See LICENSE for more information.

[cocoapods-version-link]: link of cocapods for this lib [cocoapods-version]: link of cocoapods icon