YNExpandableCell 1.2.1

YNExpandableCell 1.2.1

测试已测试
Lang语言 SwiftSwift
许可 MIT
发布最新发布2019年2月
SPM支持 SPM

[younatics] 维护。




  • 作者
  • Seungyoun Yi

使用 ExpandableCell。这是此库的新版本。

YNExpandableCell

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

更新

详细信息请参阅 CHANGELOG

介绍

为 iOS 提供最易用的可展开和可折叠单元格,使用 Swift 4.2 编写。您可以根据需要自定义可展开的 UITableViewCell。创建 YNExpandableCell 的原因是因为 insertRowsdeleteRows 比较难用。您可以简单地继承 YNTableViewDelegate 并添加一个方法 func tableView(_ tableView: YNTableView, expandCellAt indexPath) -> UITableViewCell?

demo

需求

YNExpandableCell是用Swift 3编写的。与iOS 8.0+兼容。

安装

Cocoapods

YNExpandableCell可以通过CocoaPods获取。要安装它,只需将以下行添加到您的Podfile中

pod 'YNExpandableCell'

Carthage

github "younatics/YNExpandableCell"

通过CocoaPods安装YNExpandableCell。要安装它,只需将以下行添加到您的Podfile中

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

使用之一所需方法

YNTableViewDelegate方法中设置可展开单元格(必需)

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
}

YNTableViewDelegate方法中使用YNTableViewCell对象设置具有高度的展开单元格(必需)

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
}

YNTableViewDelegate方法中获取didSelectRowAt(可选)

func tableView(_ tableView: YNTableView, didSelectRowAt indexPath: IndexPath, isExpandableCell: Bool, isExpandedCell: Bool) {
    print("Selected Section: \(indexPath.section) Row: \(indexPath.row) isExpandableCell: \(isExpandableCell) isExpandedCell: \(isExpandedCell)")
}

YNTableViewDelegate方法中获取didDeselectRowAt(可选)

func tableView(_ tableView: YNTableView, didDeselectRowAt indexPath: IndexPath, isExpandableCell: Bool, isExpandedCell: Bool) {
    print("Deselected Section: \(indexPath.section) Row: \(indexPath.row) isExpandableCell: \(isExpandableCell) isExpandedCell: \(isExpandedCell)")
}

设置基本的UITableViewDataSourceUITableViewDelegate和完成!

自定义

如果您想要展开或折叠全部

self.ynTableView.expandAll()
self.ynTableView.collapseAll()

继承 YNExpandableCell 以获得出色的 '+' '-' 自定义附件类型

class YNExpandableCellEx: YNExpandableCell

// Change normalCustomAccessoryType, selectedCustomAccessoryType Images

自定义 UITableViewRowAnimation

self.ynTableView.ynTableViewRowAnimation = UITableViewRowAnimation.top

如果您需要,请为更多 UITableViewDelegate 制作扩展或将拉取请求发给我 :)

参考

如果您在使用此库的应用中,请告诉我或创建拉取请求 :)

@zigbang

MotionBook

作者

younatics Twitter

许可协议

YNExpandableCell 适用于 MIT 许可协议。有关更多信息,请参阅 LICENSE 文件。