CITreeView
CITreeView 创建用于以简单的方式实现和维护所需的 TreeView 结构。CITreeView 提供无限的树状结构。您只需将数据添加到 CITreeView 数据源中。
安装
CocoaPods (推荐)
- 向您的 Podfile 添加条目。
pod 'CITreeView', '~> 1.6'
- 执行 Pod 安装
pod install
手动
- 下载 .zip 文件
- 只需将 CITreeViewClasses 文件夹拖放到您的项目中
用法
初始化
- 首先,导入 CITreeView
import CITreeView
- 将 CITreeViewDelegate 和 CITreeViewDataSource 添加到你的视图控制器
class ViewController:UIViewController,CITreeViewDelegate,CITreeViewDataSource
- 初始化和配置 CITreeView
let ciTreeView = CITreeView.init(frame: self.view.bounds, style: UITableViewStyle.plain)
ciTreeView.treeViewDelegate = self
ciTreeView.treeViewDataSource = self
self.view.addSubview(ciTreeView)
- 实现 CITreeView 的代理所需的相应方法
func treeView(_ treeView: CITreeView, atIndexPath indexPath: IndexPath, withTreeViewNode treeViewNode: CITreeViewNode) -> UITableViewCell {
return cell;
}
func treeViewSelectedNodeChildren(for treeViewNodeItem: AnyObject) -> [AnyObject] {
if let dataObj = treeViewNodeItem as? CITreeViewData {
return dataObj.children
}
return []
}
func treeViewDataArray() -> [AnyObject] {
return yourDataArray
}
func treeView(_ tableView: CITreeView, heightForRowAt indexPath: IndexPath, withTreeViewNode treeViewNode:CITreeViewNode) -> CGFloat {
return UITableViewAutomaticDimension
}
func treeView(_ treeView: CITreeView, didSelectRowAt treeViewNode:CITreeViewNode) {}
func willExpandTreeViewNode(treeViewNode: CITreeViewNode, atIndexPath: IndexPath) {}
func didExpandTreeViewNode(treeViewNode: CITreeViewNode, atIndexPath: IndexPath) {}
func willCollapseTreeViewNode(treeViewNode: CITreeViewNode, atIndexPath: IndexPath) {}
func didCollapseTreeViewNode(treeViewNode: CITreeViewNode, atIndexPath: IndexPath) {}
特点
- 如果您希望每次只打开一个节点,则可以实现。如果在打开节点的同时选择另一个父节点,打开的节点将自动关闭。
ciTreeView.collapseNoneSelectedRows = true
最近添加的功能
1. connect CITreeView delegate and datasource with interface builder
2. expand all rows with expandAllRows()
3. collapse all rows with collapseAllRows()
4. get parent node of selected node as CITreeViewNode.parentNode
5. reload data without lose rows states that expanded or collapses with reloadDataWithoutChangingRowStates()
许可证
MIT 授权,版权所有 (c) 2018 Cenk Işık, @cekjacks