2021年1月26日星期二

I am trying to create a heirarchy view . The view should expand and contract once clicked on each person

enter image description here

When clicked on each person , the subordinates list of that person appears at the bottom. The whole list is dynamic .

{          "EmployeeId": "1",          "Name": "John",          "Position": "HR",          "Image": "",          "SubordinateCount": 6,          "Subordinates": [              {                  "EmployeeId": "2",                  "Name": "Sub john 1",                  "Position": "Manager",                  "Image": "",                  "SubordinateCount": 1,                  "Subordinates": [                      {                          "EmployeeId": "3",                          "Name": "Joseph",                          "Position": "Admin",                          "Image": "",                          "SubordinateCount": 1,                          "Subordinates": [                              {                                  "EmployeeId": "4",                                  "Name": "Raj",                                  "Position": "Software Developer",                                  "Image": "",                                  "SubordinateCount": 0,                                  "Subordinates": []                              }                          ]                      }                  ]              },              {                  "EmployeeId": "5",                  "Name": "Rahul",                  "Position": "ERP Consultant",                  "Image": "",                  "SubordinateCount": 16,                  "Subordinates": [                      {                          "EmployeeId": "6",                          "Name": "Fam",                          "Position": "QA",                          "Image": null,                          "SubordinateCount": 0,                          "Subordinates": []                      },                      {                          "EmployeeId": "7",                          "Name": "Salman A Q",                          "Position": "Software Developer",                          "Image": null,                          "SubordinateCount": 0,                          "Subordinates": []                      },                      {                          "EmployeeId": "8",                          "Name": "Mac",                          "Position": "Software Developer",                          "Image": null,                          "SubordinateCount": 0,                          "Subordinates": []                      },                      {                          "EmployeeId": "9",                          "Name": "Mathew",                          "Position": "QA",                          "Image": null,                          "SubordinateCount": 0,                          "Subordinates": []                      },                      {                          "EmployeeId": "10",                          "Name": "Kim",                          "Position": "QA",                          "Image": null,                          "SubordinateCount": 0,                          "Subordinates": []                      },                      {                          "EmployeeId": "11",                          "Name": "Loren",                          "Position": "Software Developer",                          "Image": "",                          "SubordinateCount": 0,                          "Subordinates": []                      },                      {                          "EmployeeId": "12",                          "Name": "Adam",                          "Position": "QA",                          "Image": null,                          "SubordinateCount": 0,                          "Subordinates": []                      },                      {                          "EmployeeId": "13",                          "Name": "Meera",                          "Position": "QA",                          "Image": null,                          "SubordinateCount": 0,                          "Subordinates": []                      },                      {                          "EmployeeId": "14",                          "Name": "MMM",                          "Position": "QA",                          "Image": null,                          "SubordinateCount": 0,                          "Subordinates": []                      },                      {                          "EmployeeId": "15",                          "Name": "Master",                          "Position": "QA",                          "Image": null,                          "SubordinateCount": 0,                          "Subordinates": []                      },                      {                          "EmployeeId": "16",                          "Name": "Michael",                          "Position": "QA",                          "Image": null,                          "SubordinateCount": 0,                          "Subordinates": []                      },                      {                          "EmployeeId": "17",                          "Name": "George",                          "Position": "Consultant",                          "Image": null,                          "SubordinateCount": 0,                          "Subordinates": []                      },                      {                          "EmployeeId": "18",                          "Name": "Ahmedu A F",                          "Position": "QA",                          "Image": null,                          "SubordinateCount": 0,                          "Subordinates": []                      },                      {                          "EmployeeId": "19",                          "Name": "KKKK",                          "Position": "QA",                          "Image": null,                          "SubordinateCount": 0,                          "Subordinates": []                      },                      {                          "EmployeeId": "20",                          "Name": "xxx",                          "Position": "QA",                          "Image": null,                          "SubordinateCount": 0,                          "Subordinates": []                      },                      {                          "EmployeeId": "21",                          "Name": "DK",                          "Position": "QA",                          "Image": null,                          "SubordinateCount": 0,                          "Subordinates": []                      }                  ]              },              {                  "EmployeeId": "22",                  "Name": "HHHH",                  "Position": "Engineer",                  "Image": "",                  "SubordinateCount": 1,                  "Subordinates": [                      {                          "EmployeeId": "23",                          "Name": "Ar",                          "Position": "Technical",                          "Image": "",                          "SubordinateCount": 0,                          "Subordinates": []                      }                  ]              },              {                  "EmployeeId": "24",                  "Name": "Sun",                  "Position": "Software Developer",                  "Image": null,                  "SubordinateCount": 1,                  "Subordinates": [                      {                          "EmployeeId": "25",                          "Name": "AAAA",                          "Position": null,                          "Image": null,                          "SubordinateCount": 0,                          "Subordinates": []                      }                  ]              },              {                  "EmployeeId": "26",                  "Name": "CCCC",                  "Position": "Consultant",                  "Image": null,                  "SubordinateCount": 0,                  "Subordinates": []              },              {                  "EmployeeId": "27",                  "Name": "Jaaaa",                  "Position": "Software Developer",                  "Image": null,                  "SubordinateCount": 2,                  "Subordinates": [                      {                          "EmployeeId": "28",                          "Name": "Jay",                          "Position": "Ssssss",                          "Image": null,                          "SubordinateCount": 0,                          "Subordinates": []                      },                      {                          "EmployeeId": "29",                          "Name": "NNNN",                          "Position": "Sssss",                          "Image": null,                          "SubordinateCount": 1,                          "Subordinates": [                              {                                  "EmployeeId": "30",                                  "Name": "Jo",                                  "Position": "Engineer",                                  "Image": null,                                  "SubordinateCount": 0,                                  "Subordinates": []                              }                          ]                      }                  ]              }          ]      }  

This is the json to be used .I have tried with collection view inside table view.But failed when i try to delete a row when user moves to the top and clicks on a new person . I have seen many libraries showing tree structure for table view . But i think that cannot be used here .

This is what i have tried so far.

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {          return selectedIndexes.count + 1      }            func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {                    var bottomCell : SubordinatesTableViewCell! = self.Extableview.dequeueReusableCell(withIdentifier: "SubordinatesTableViewCell") as? SubordinatesTableViewCell          if bottomCell == nil {              let nib:Array = Bundle.main.loadNibNamed("SubordinatesTableViewCell", owner: self, options: nil)!              bottomCell = nib[0] as? SubordinatesTableViewCell          }              bottomCell.empLevel = indexPath.row              bottomCell.delegate = self              bottomCell.subordinateDetails = self.subordinatesList          return bottomCell  }    extension CurrentVC : SubordinateCellDelegate {      func employeeClicked(row: Int?, index: Int?) {          self.subordinatesList = self.heirarchy?.subordinates          self.currentHeirarchyLevel = row! + 1          if self.Extableview.numberOfRows(inSection: 0) > row! + 1 {              var newIndexes = [Int]()              if row! == 0 {                  self.selectedIndexes.removeAll()                  self.selectedIndexes.append(index!)              }else {              for i in 0..<(row! + 1) {                  newIndexes.append(selectedIndexes[i])              }              self.selectedIndexes = newIndexes              self.selectedIndexes.append(index!)              }              for i in 0..<row! + 1 {                  self.subordinatesList = self.subordinatesList?[self.selectedIndexes[i]].subordinates                  print(subordinatesList)                                }              if subordinatesList?.count ?? 0 > 0  {                  self.Extableview.reloadRows(at: [IndexPath(row: self.currentHeirarchyLevel, section: 0)], with: .fade)              }else {                  for i in 0..<self.Extableview.numberOfRows(inSection: 0) {                      if i > row! {                      self.Extableview.beginUpdates()                      self.Extableview.deleteRows(at: [IndexPath(row: 1, section: 0)], with: .fade)                      }                  }                  self.numOfsections = row! + 1                  self.Extableview.endUpdates()              }          }else {              self.selectedIndexes.append(index!)              for i in 0..<row! + 1 {                  self.subordinatesList = self.subordinatesList?[self.selectedIndexes[i]].subordinates                                }          if self.subordinatesList?.count ?? 0 > 0 {          self.Extableview.beginUpdates()              self.numOfsections = row! + 2              self.Extableview.insertRows(at: [IndexPath(row: row! + 1, section: 0)], with: .none)          self.Extableview.endUpdates()          }else {              for i in 0..<self.Extableview.numberOfRows(inSection: 0) {                  if i > row! {                  self.Extableview.beginUpdates()                      self.numOfsections = row! + 1                  self.Extableview.deleteRows(at: [IndexPath(row: 1, section: 0)], with: .fade)                  }              }              self.Extableview.endUpdates()          }          }      }  }  
https://stackoverflow.com/questions/65912688/i-am-trying-to-create-a-heirarchy-view-the-view-should-expand-and-contract-onc January 27, 2021 at 11:55AM

没有评论:

发表评论