USE ExpandableCell. New version of this library.
Awesome Version Carthage Compatible CocoaPods License: MIT Build Status Platform Swift 4.2
See CHANGELOG for details
Easiest usage of expandable & collapsible cell for iOS, written in Swift 4.2 You can customize expandable UITableViewCell whatever you like. YNExpandableCell is made because insertRows and deleteRows is hard to use. You can just inheirt YNTableViewDelegate and add one more method func tableView(_ tableView: YNTableView, expandCellAt indexPath) -> UITableViewCell?
YNExpandableCell written in Swift 3. Compatible with iOS 8.0+
YNExpandableCell is available through CocoaPods. To install it, simply add the following line to your Podfile:
pod 'YNExpandableCell'
github "younatics/YNExpandableCell"
import YNExpandableCellMake YNTableView in Storyboard or in code
@IBOutlet var ynTableView: YNTableView!
Inherit YNTableViewDelegate
class ViewController: UIViewController, YNTableViewDelegate
Set delegate and register cells
self.ynTableView.ynDelegate = self let cells = ["YNExpandableCellEx","YNSliderCell","YNSegmentCell"] self.ynTableView.registerCellsWith(nibNames: cells, and: cells) self.ynTableView.registerCellsWith(cells: [UITableViewCell.self as AnyClass], and: ["YNNonExpandableCell"])
Set expandable cell in YNTableViewDelegate method (Required)
func tableView(_ tableView: YNTableView, expandCellAt indexPath: IndexPath) -> UITableViewCell? { let ynSliderCell = tableView.dequeueReusableCell(withIdentifier: YNSliderCell.ID) as! YNSliderCell if indexPath.section == 0 && indexPath.row == 1 { return ynSliderCell } return nil }
Set expandable cell with height in YNTableViewDelegate method using YNTableViewCell object (Required)
func tableView(_ tableView: YNTableView, expandCellWithHeightAt indexPath: IndexPath) -> YNTableViewCell? { let ynSliderCell = YNTableViewCell() ynSliderCell.cell = tableView.dequeueReusableCell(withIdentifier: YNSliderCell.ID) as! YNSliderCell ynSliderCell.height = 142 if indexPath.section == 0 && indexPath.row == 1 { return ynSliderCell } return nil }
Get didSelectRowAt in YNTableViewDelegate method (Optional)
func tableView(_ tableView: YNTableView, didSelectRowAt indexPath: IndexPath, isExpandableCell: Bool, isExpandedCell: Bool) { print("Selected Section: \(indexPath.section) Row: \(indexPath.row) isExpandableCell: \(isExpandableCell) isExpandedCell: \(isExpandedCell)") }
Get didDeselectRowAt in YNTableViewDelegate method (Optional)
func tableView(_ tableView: YNTableView, didDeselectRowAt indexPath: IndexPath, isExpandableCell: Bool, isExpandedCell: Bool) { print("Deselected Section: \(indexPath.section) Row: \(indexPath.row) isExpandableCell: \(isExpandableCell) isExpandedCell: \(isExpandedCell)") }
Set basic UITableViewDataSource, UITableViewDelegate and Done!
Expand & Collapse All if you want
self.ynTableView.expandAll() self.ynTableView.collapseAll()
Inherit YNExpandableCell if you want awesome '+' '-' custom accessory type
class YNExpandableCellEx: YNExpandableCell // Change normalCustomAccessoryType, selectedCustomAccessoryType Images
Cutomize UITableViewRowAnimation
self.ynTableView.ynTableViewRowAnimation = UITableViewRowAnimation.top
Make Extensions for more UITableViewDelegate if you need or make pull request for me :)
YNExpandableCell is available under the MIT license. See the LICENSE file for more info.