視圖層
正常樹形顯示
這里顯示十級 每級100條數(shù)據(jù) 總共1000條數(shù)據(jù)的效果圖
WMZTreeViewParam *param =TreeViewParam() .wDataSet(@[TreeParam(),TreeParam()])
self.treeView = [[WMZTreeView alloc]initWithParam:param];
[self.view addSubview:self.treeView];
可選中樹形+選中高亮顯示
TreeViewParam()
//可勾選
.wShowCheckboxSet(YES)
//節(jié)點字體高亮顏色
.wHighlightCurrentSet(TreeColor(0x1d76db))
自定義節(jié)點內(nèi)容+增刪節(jié)點
TreeViewParam()
//自定義節(jié)點內(nèi)容
.wEventTreeCellSet(^UITableViewCell *(id model, NSIndexPath *path,UITableView *table,id param) {
WMZMyCell *cell = [table dequeueReusableCellWithIdentifier:@"WMZMyCell"];
if (!cell) {
cell = [[WMZMyCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"WMZMyCell" parentModel:param];
}
cell.model = model;
return cell;
})
增刪實例方法
/*
*為 Tree 中的一個節(jié)點追加一個子節(jié)點
@param currrentID 當前節(jié)點
@param param 子節(jié)點數(shù)據(jù)
@return BOOL 是否追加成功
*/
- (BOOL)append:(NSString*)currrentID node:(WMZTreeParam*)param;
/*
*為 Tree 的一個節(jié)點的后面增加一個節(jié)點
@param currrentID 當前節(jié)點
@param param 子節(jié)點數(shù)據(jù)
@return BOOL 是否追加成功
*/
- (BOOL)insertAfter:(NSString*)currrentID node:(WMZTreeParam*)param;
/*
*為 Tree 的一個節(jié)點的前面增加一個節(jié)點
@param currrentID 當前節(jié)點
@param param 子節(jié)點數(shù)據(jù)
@return BOOL 是否追加成功
*/
- (BOOL)insertBefore:(NSString*)currrentID node:(WMZTreeParam*)param;
/*
*刪除節(jié)點
@param currrentID 當前節(jié)點
@return BOOL 是否追加成功
*/
- (BOOL)remove:(NSString*)currrentID;
手風琴效果+指定層級可勾選 (這里選取3級結構,指定最后一級才可勾選)
//手風琴效果 同級只展開一級
TreeViewParam().wAccordionSet(YES)
//能否選擇
TreeParam().canSelectSet(NO)
勾選不關聯(lián)父節(jié)點和子節(jié)點+默認選中+默認全部展開
TreeViewParam()
//父節(jié)點和子節(jié)點 勾選不關聯(lián)
.wCheckStrictlySet(NO)
//默認展開全部
.wDefaultExpandAllSet(YES)
//默認勾選
.wDefaultExpandedKeysSet(@[@"5",@"10",@"12"])
開啟拖拽( ?目前只支持沒有子節(jié)點的節(jié)點拖拽,避免嵌套數(shù)據(jù)的bug, 如果有什么方便的辦法可以支持多個連續(xù)的cell一起拖拽的告知下,不勝感激)
TreeViewParam()
//拖拽
.wDraggableSet(YES)
配置參數(shù)和方法
可配置參數(shù) | 類型 | 作用 |
---|---|---|
wData | NSArray | 展示數(shù)據(jù) 必傳 |
wFrame | CGRect | frame 必傳 |
wEmptyData | NSDictionary | 內(nèi)容為空的時候展示的數(shù)據(jù) default nil (image為圖片 name為文字) |
wHighlightCurrent | UIColor | 高亮當前選中節(jié)點顏色囤躁,default nil |
wNodeTextFont | CGFloat | 節(jié)點的字體大小 default 15.0f |
wNodeTextColor | UIColor | 節(jié)點的字體顏色 default 333333 |
wDefaultExpandAll | BOOL | 是否默認展開所有節(jié)點 default NO |
wCheckStrictly | BOOL | 在顯示復選框的情況下墨吓,是否嚴格的遵循父子互相關聯(lián)的做法,defualt為 YES |
wHideExpanIcon | BOOL | 隱藏展開圖標洒擦,defualt為 NO |
wShowCheckbox | BOOL | 節(jié)點是否可被選擇 default NO |
wAccordion | BOOL | 是否每次只打開一個同級樹節(jié)點展開 手風琴效果 default NO |
wDraggable | BOOL | 是否允許拖動cell蕉斜,默認為NO |
wDefaultExpandedKeys | NSArray | 默認展開的節(jié)點的 key 的數(shù)組 default nil |
wIndent | NSInteger | 相鄰級節(jié)點間的水平縮進距離 默認2 |
wExpandIcon | NSString | 自定義樹節(jié)點的圖標 |
wSelectExpandIcon | NSString | 自定義樹節(jié)點展開的圖標 |
wCheckIcon | NSString | 自定義樹節(jié)點未勾選的圖標 |
wSelectCheckIcon | NSString | 自定義樹節(jié)點勾選的圖標 |
wHalfSelectCheckIcon | NSString | 自定義樹節(jié)點半選中的圖標 (沒有全選) |
可監(jiān)聽block事件 | 作用 |
---|---|
wEventTreeCell | 自定義節(jié)點cell |
wEventCellUserEnabled | 自定義cell其他交互 |
wEventCellHeight | 自定義cell高度 |
wEventNodeClick | 節(jié)點被點擊時的回調(diào) |
wEventNodeDraggable | 節(jié)點拖拽完成回調(diào) |
wEventCheckChange | 節(jié)點選中狀態(tài)發(fā)生變化時的回調(diào) |
實例方法 | 作用 |
---|---|
initWithParam | 初始化 |
updateKeyChildren | 更新或者設置子節(jié)點數(shù)組 |
getCheckedNodesWithHalfSelect | 獲取當前選中的節(jié)點數(shù)組 |
append | 為 Tree 中的一個節(jié)點追加一個子節(jié)點 |
remove | 刪除節(jié)點 |
insertBefore | 為 Tree 的一個節(jié)點的前面增加一個節(jié)點 |
insertAfter | 為 Tree 的一個節(jié)點的后面增加一個節(jié)點 |
updateEditing | 更新編輯狀態(tài) |
模型層
- 支持 WMZTreeParam
TreeParam()
.cueerntIdSet(@"1")
.parentIdSet(@"2")
.nameSet(@"第一級")
.canSelectSet(YES)
.isExpandSet(YES)
.dataSet(@"")
2.支持 NSDictionary
@[@{
@"name":@"1級",
@"currentId":@"1",
@"children":@[
@{
@"name":@"1_2_1級",
@"currentId":@"1_2_1",
@"parentId":@"1",
@"children":@[
@{
@"name":@"1_3_1級",
@"currentId":@"1_3_1",
@"parentId":@"1_2_1",
},
@{
@"name":@"1_3_2級",
@"currentId":@"1_3_2",
@"parentId":@"1_2_1",
},
@{
@"name":@"1_3_3級",
@"currentId":@"1_3_3",
@"parentId":@"1_2_1",
},
]
},
@{
@"name":@"1_2_2級",
@"currentId":@"1_2_2",
@"parentId":@"1",
},
@{
@"name":@"1_2_3級",
@"currentId":@"1_2_3",
@"parentId":@"1",
},
]
}]
配置參數(shù)
可配置參數(shù) | 類型 | 作用 |
---|---|---|
cueerntId | NSString | 當前節(jié)點ID 必傳 |
parentId | NSString | 父節(jié)點ID,不傳表示第一級 |
name | NSString | 顯示的文本 |
isExpand | BOOL | 是否展開 默認NO |
canSelect | BOOL | 能否選中 默認NO |
data | id | 攜帶的其他數(shù)據(jù) |
其他具體看demo
依賴
無任何依賴
安裝
CocoaPods
- 將 cocoapods 更新至最新版本.
- 在 Podfile 中添加
pod 'WMZTreeView'
逾柿。 - 執(zhí)行
pod install
或pod update
。 - 導入 #import "WMZTreeView.h"宅此。
注:要消除鏈式編程的警告
要在Buildding Settings 把CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF 設為NO
手動安裝
- 下載 WMZTreeView 文件夾內(nèi)的所有內(nèi)容机错。
- 將 WMZTreeView 內(nèi)的源文件添加(拖放)到你的工程。
- 導入 #import "WMZTreeView.h"
使用過程中如果有什么bug歡迎給我提issue 我看到就會解決
GitHub地址