YNExpandableCell

✨ Awesome expandable, collapsible tableview cell for iOS written in Swift 4

Github stars Tracking Chart

USE ExpandableCell. New version of this library.

YNExpandableCell

Awesome
Version
Carthage Compatible
CocoaPods
License: MIT
Build Status
Platform
Swift 4.2

Updates

See CHANGELOG for details

Intoduction

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?

demo

Requirements

YNExpandableCell written in Swift 3. Compatible with iOS 8.0+

Installation

Cocoapods

YNExpandableCell is available through CocoaPods. To install
it, simply add the following line to your Podfile:

pod 'YNExpandableCell'

Carthage

github "younatics/YNExpandableCell"

Usage

import YNExpandableCell

Make 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"])

Use one of required method

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!

Customize

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 :)

References

Please tell me or make pull request if you use this library in your application :)

@zigbang

MotionBook

Author

younatics

License

YNExpandableCell is available under the MIT license. See the LICENSE file for more info.

Main metrics

Overview
Name With Owneryounatics/YNExpandableCell
Primary LanguageSwift
Program languageSwift (Language Count: 3)
Platform
License:MIT License
所有者活动
Created At2017-03-11 00:56:17
Pushed At2019-10-15 14:42:57
Last Commit At2019-02-17 21:03:57
Release Count17
Last Release Name1.2.1 (Posted on )
First Release Name0.1.0 (Posted on )
用户参与
Stargazers Count455
Watchers Count11
Fork Count35
Commits Count127
Has Issues Enabled
Issues Count25
Issue Open Count7
Pull Requests Count2
Pull Requests Open Count1
Pull Requests Close Count0
项目设置
Has Wiki Enabled
Is Archived
Is Fork
Is Locked
Is Mirror
Is Private