From 909273c1c974b0574a70ec1a602213cd45574e5e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cenk=20IS=CC=A7IK?= Date: Thu, 1 Feb 2018 11:39:14 +0300 Subject: [PATCH] Changing CITreeView Class For Manul Adding --- CITreeViewClasses/CITreeView.swift | 35 +++++++++++--------- CITreeViewClasses/CITreeViewController.swift | 6 ++-- CITreeViewClasses/CITreeViewNode.swift | 4 +-- 3 files changed, 24 insertions(+), 21 deletions(-) diff --git a/CITreeViewClasses/CITreeView.swift b/CITreeViewClasses/CITreeView.swift index 11907bd..9686b4a 100644 --- a/CITreeViewClasses/CITreeView.swift +++ b/CITreeViewClasses/CITreeView.swift @@ -10,8 +10,8 @@ import UIKit protocol CITreeViewDataSource { func treeView(_ treeView:CITreeView, atIndexPath indexPath:IndexPath, withTreeViewNode treeViewNode:CITreeViewNode) -> UITableViewCell - func treeViewSelectedNodeChildren(for treeViewNodeItem:AnyObject) -> [AnyObject] - func treeViewDataArray() -> [AnyObject] + func treeViewSelectedNodeChildren(for treeViewNodeItem:Any) -> [Any] + func treeViewDataArray() -> [Any] } protocol CITreeViewDelegate { @@ -68,18 +68,20 @@ class CITreeView: UITableView { self.endUpdates() } - fileprivate func collapseRows(for treeViewNode: CITreeViewNode, atIndexPath indexPath: IndexPath) { + fileprivate func collapseRows(for treeViewNode: CITreeViewNode, atIndexPath indexPath: IndexPath ,completion: @escaping () -> Void) { if #available(iOS 11.0, *) { self.performBatchUpdates({ deleteRows() }, completion: { (complete) in self.treeViewDelegate?.didCollapseTreeViewNode(treeViewNode: treeViewNode, atIndexPath:indexPath) + completion() }) } else { CATransaction.begin() CATransaction.setCompletionBlock({ self.treeViewDelegate?.didCollapseTreeViewNode(treeViewNode: treeViewNode, atIndexPath: indexPath) + completion() }) deleteRows() CATransaction.commit() @@ -126,25 +128,26 @@ extension CITreeView : UITableViewDelegate { var willExpandIndexPath = indexPath if (selectedTreeViewNode?.expand)! { treeViewController.collapseRows(for: selectedTreeViewNode!, atIndexPath: indexPath) - collapseRows(for: self.selectedTreeViewNode!, atIndexPath: indexPath) + collapseRows(for: self.selectedTreeViewNode!, atIndexPath: indexPath){} } else { - if collapseNoneSelectedRows, selectedTreeViewNode?.level == 0 { - if let collapsedTreeViewNode = treeViewController.collapseAllRows() { - if treeViewController.indexPathsArray.count > 0 { - collapseRows(for: collapsedTreeViewNode, atIndexPath: indexPath) - for (index, treeViewNode) in mainDataArray.enumerated() { - if treeViewNode == selectedTreeViewNode { - willExpandIndexPath.row = index - } + if collapseNoneSelectedRows, selectedTreeViewNode?.level == 0, let collapsedTreeViewNode = treeViewController.collapseAllRows(), treeViewController.indexPathsArray.count > 0 { + + collapseRows(for: collapsedTreeViewNode, atIndexPath: indexPath){ + for (index, treeViewNode) in self.mainDataArray.enumerated() { + if treeViewNode == self.selectedTreeViewNode { + willExpandIndexPath.row = index } } + self.treeViewController.expandRows(atIndexPath: willExpandIndexPath, with: self.selectedTreeViewNode!) + self.expandRows(for: self.selectedTreeViewNode!, withSelected: indexPath) } + + }else{ + treeViewController.expandRows(atIndexPath: willExpandIndexPath, with: selectedTreeViewNode!) + expandRows(for: self.selectedTreeViewNode!, withSelected: indexPath) } - treeViewController.expandRows(atIndexPath: willExpandIndexPath, with: selectedTreeViewNode!) - - expandRows(for: self.selectedTreeViewNode!, withSelected: indexPath) } } } @@ -169,7 +172,7 @@ extension CITreeView : UITableViewDataSource { } extension CITreeView : CITreeViewControllerDelegate { - func getChildren(forTreeViewNodeItem item: AnyObject, with indexPath: IndexPath) -> [AnyObject] { + func getChildren(forTreeViewNodeItem item: Any, with indexPath: IndexPath) -> [Any] { return (self.treeViewDataSource?.treeViewSelectedNodeChildren(for: item))! } diff --git a/CITreeViewClasses/CITreeViewController.swift b/CITreeViewClasses/CITreeViewController.swift index d902902..c108309 100644 --- a/CITreeViewClasses/CITreeViewController.swift +++ b/CITreeViewClasses/CITreeViewController.swift @@ -9,7 +9,7 @@ import UIKit protocol CITreeViewControllerDelegate : NSObjectProtocol { - func getChildren(forTreeViewNodeItem item:AnyObject, with indexPath:IndexPath) -> [AnyObject] + func getChildren(forTreeViewNodeItem item:Any, with indexPath:IndexPath) -> [Any] func willExpandTreeViewNode(treeViewNode:CITreeViewNode, atIndexPath: IndexPath) func willCollapseTreeViewNode(treeViewNode:CITreeViewNode, atIndexPath: IndexPath) } @@ -25,7 +25,7 @@ class CITreeViewController:NSObject { } //MARK: Tree View Nodes Functions - func addTreeViewNode(with item:AnyObject){ + func addTreeViewNode(with item:Any){ let treeViewNode = CITreeViewNode(item: item) let hasNodeBefore = treeViewNodes.filter{$0 == treeViewNode} @@ -39,7 +39,7 @@ class CITreeViewController:NSObject { return treeViewNodes[index] } - func insertTreeViewNode(with item:AnyObject, to index : Int) + func insertTreeViewNode(with item:Any, to index : Int) { let treeViewNode = CITreeViewNode(item: item) treeViewNodes.insert(treeViewNode, at: index) diff --git a/CITreeViewClasses/CITreeViewNode.swift b/CITreeViewClasses/CITreeViewNode.swift index 1145c4b..c67ed79 100644 --- a/CITreeViewClasses/CITreeViewNode.swift +++ b/CITreeViewClasses/CITreeViewNode.swift @@ -11,9 +11,9 @@ import UIKit class CITreeViewNode: NSObject { var expand:Bool = false var level:Int = 0 - var item:AnyObject + var item:Any - init(item:AnyObject) { + init(item:Any) { self.item = item } }