IHTreeTableViewNode.swift 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. //
  2. // IHTreeTableViewNode.swift
  3. // Inhealth
  4. //
  5. // Created by weclouds on 2019/12/23.
  6. // Copyright © 2019 weclouds. All rights reserved.
  7. //
  8. import UIKit
  9. class IHTreeTableViewNode: NSObject {
  10. ///父节点 - nil表示根节点
  11. var perentNode :IHTreeTableViewNode?{
  12. didSet{
  13. if let parentN = self.perentNode ,!parentN.subNodes.contains(self) {
  14. parentN.subNodes.append(self)
  15. }
  16. }
  17. }
  18. ///子节点集合
  19. var subNodes :[IHTreeTableViewNode] = [IHTreeTableViewNode](){
  20. didSet{
  21. for childNode in self.subNodes {
  22. childNode.perentNode = self
  23. }
  24. }
  25. }
  26. ///本节点ID
  27. var nodeID :String = "0"
  28. ///本节点名称
  29. var nodeName :String = ""
  30. ///设备数量
  31. var deviceCount : String = "0"
  32. ///本节点是否处于展开状态
  33. var isExpand:Bool = false
  34. ///深度:根节点为0
  35. var depth :Int{
  36. if let parentN = self.perentNode {
  37. return parentN.depth + 1
  38. }
  39. return 0
  40. }
  41. override init() {
  42. super.init()
  43. if nodeName == "" {
  44. return
  45. }
  46. }
  47. /// 便利构造函数
  48. ///
  49. /// - Parameters:
  50. /// - parentNodeID: 父节点ID(>=-1,-1表示根节点)
  51. /// - nodeID: 本节点ID(>=0)
  52. /// - nodeName: 本节点名称(!="")
  53. /// - isExpand: 本节点是否处于展开状态
  54. convenience init?(nodeID:String,nodeName:String,deviceCount:String,isExpand:Bool) {
  55. self.init()
  56. if nodeName == "" {
  57. return nil
  58. }else{
  59. self.nodeID = nodeID
  60. self.nodeName = nodeName
  61. self.deviceCount = deviceCount
  62. self.isExpand = isExpand
  63. }
  64. }
  65. ///添加子节点
  66. ///
  67. /// - Paramerter childNode : 子节点
  68. func addChildNode(childNode:IHTreeTableViewNode) {
  69. childNode.perentNode = self
  70. }
  71. }