ExpandableCell。这是此库的新版本。
使用YNExpandableCell
更新
详细信息请参阅 CHANGELOG
介绍
为 iOS 提供最易用的可展开和可折叠单元格,使用 Swift 4.2 编写。您可以根据需要自定义可展开的 UITableViewCell
。创建 YNExpandableCell
的原因是因为 insertRows
和 deleteRows
比较难用。您可以简单地继承 YNTableViewDelegate
并添加一个方法 func tableView(_ tableView: YNTableView, expandCellAt indexPath) -> UITableViewCell?
需求
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)")
}
设置基本的UITableViewDataSource
、UITableViewDelegate
和完成!
自定义
如果您想要展开或折叠全部
self.ynTableView.expandAll()
self.ynTableView.collapseAll()
继承 YNExpandableCell
以获得出色的 '+' '-' 自定义附件类型
class YNExpandableCellEx: YNExpandableCell
// Change normalCustomAccessoryType, selectedCustomAccessoryType Images
自定义 UITableViewRowAnimation
self.ynTableView.ynTableViewRowAnimation = UITableViewRowAnimation.top
如果您需要,请为更多 UITableViewDelegate
制作扩展或将拉取请求发给我 :)
参考
如果您在使用此库的应用中,请告诉我或创建拉取请求 :)
@zigbang
MotionBook
作者
许可协议
YNExpandableCell 适用于 MIT 许可协议。有关更多信息,请参阅 LICENSE 文件。