• Stars
    star
    168
  • Rank 225,507 (Top 5 %)
  • Language
    Objective-C
  • License
    MIT License
  • Created about 5 years ago
  • Updated almost 2 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

类似前端elementUI的树形控件,可自定义节点内容,支持无限极节点,可拖拽增删节点等等,非递归实现

UI效果仿照前端element-UI的Tree控件

Platform CocoaPods Compatible License

视图层

正常树形显示

这里显示十级 每级100条数据 总共1000条数据的效果图

treeNone.gif

WMZTreeViewParam *param =TreeViewParam() .wDataSet(@[TreeParam(),TreeParam()])
self.treeView = [[WMZTreeView alloc]initWithParam:param];
[self.view addSubview:self.treeView];

可选中树形+选中高亮显示

treeSelect.gif

TreeViewParam()
 //可勾选
.wShowCheckboxSet(YES)
 //节点字体高亮颜色
.wHighlightCurrentSet(TreeColor(0x1d76db))

自定义节点内容+增删节点

treeCell.gif

TreeViewParam()
 //自定义节点内容
.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 中的一个节点追加一个子节点
  @param currrentID 当前节点
  @param param 子节点数据
  @return BOOL 是否追加成功
 */
- (BOOL)append:(NSString*)currrentID node:(WMZTreeParam*)param;

/*
 *为 Tree 的一个节点的后面增加一个节点
  @param currrentID 当前节点
  @param param 子节点数据
  @return BOOL 是否追加成功
 */
- (BOOL)insertAfter:(NSString*)currrentID node:(WMZTreeParam*)param;

/*
 *为 Tree 的一个节点的前面增加一个节点
  @param currrentID 当前节点
  @param param 子节点数据
  @return BOOL 是否追加成功
 */
- (BOOL)insertBefore:(NSString*)currrentID node:(WMZTreeParam*)param;

/*
 *删除节点
  @param currrentID 当前节点
  @return BOOL 是否追加成功
 */
- (BOOL)remove:(NSString*)currrentID;


手风琴效果+指定层级可勾选 (这里选取3级结构,指定最后一级才可勾选)

treeCanSelect.gif

//手风琴效果 同级只展开一级
TreeViewParam().wAccordionSet(YES)

//能否选择
TreeParam().canSelectSet(NO)

勾选不关联父节点和子节点+默认选中+默认全部展开

treeCheck.gif

TreeViewParam()
//父节点和子节点 勾选不关联
.wCheckStrictlySet(NO)
//默认展开全部 
.wDefaultExpandAllSet(YES)
//默认勾选
.wDefaultExpandedKeysSet(@[@"5",@"10",@"12"])

开启拖拽

treeDraggable.gif

TreeViewParam()
//拖拽
.wDraggableSet(YES)

模型层

1 任意模型实现WMZTreeProcotol协议

参考WMZCustomModel

1.使用或继承WMZTreeParam (已经实现了WMZTreeProcotol协议)

WMZTreeParam *tree = WMZTreeParam.new;
tree.cueerntId =  @"1";
tree.parentId =  @"2";
tree.name =  @"第一级";

2.NSDictionary

    @[
        @{
            WMZTreeName:@"1级",
            WMZTreeCurrentId:@"1",
            WMZTreeChildren:@[
                    @{
                        WMZTreeName:@"1_2_1级",
                        WMZTreeCurrentId:@"1_2_1",
                        WMZTreeParentId:@"1",
                        WMZTreeChildren:@[
                                           @{
                                               WMZTreeName:@"1_3_1级",
                                               WMZTreeCurrentId:@"1_3_1",
                                               WMZTreeParentId:@"1_2_1",
                                           },
                                           @{
                                               WMZTreeName:@"1_3_2级",
                                               WMZTreeCurrentId:@"1_3_2",
                                               WMZTreeParentId:@"1_2_1",
                                           },
                                          @{
                                               WMZTreeName:@"1_3_3级",
                                               WMZTreeCurrentId:@"1_3_3",
                                               WMZTreeParentId:@"1_2_1",
                                           },
                                   ]
                    },
                    @{
                        WMZTreeName:@"1_2_2级",
                        WMZTreeCurrentId:@"1_2_2",
                        WMZTreeParentId:@"1",
                    },
                   @{
                        WMZTreeName:@"1_2_3级",
                        WMZTreeCurrentId:@"1_2_3",
                        WMZTreeParentId:@"1",
                    },
            ]
        },
        @{
            WMZTreeName:@"2级",
            WMZTreeCurrentId:@"2",
            WMZTreeChildren:@[
                    @{
                        WMZTreeName:@"2_2_1级",
                        WMZTreeCurrentId:@"2_2_1",
                        WMZTreeParentId:@"2",
                    },
                    @{
                        WMZTreeName:@"2_2_2级",
                        WMZTreeCurrentId:@"2_2_2",
                        WMZTreeParentId:@"2",
                    },
                   @{
                        WMZTreeName:@"2_2_3级",
                        WMZTreeCurrentId:@"2_2_3",
                        WMZTreeParentId:@"2",
                    },
            ]
        },
        @{
            WMZTreeName:@"3级",
            WMZTreeCurrentId:@"3",
            WMZTreeChildren:@[
                    @{
                        WMZTreeName:@"3_2_1级",
                        WMZTreeCurrentId:@"3_2_1",
                        WMZTreeParentId:@"3",
                    },
                    @{
                        WMZTreeName:@"3_2_2级",
                        WMZTreeCurrentId:@"3_2_2",
                        WMZTreeParentId:@"3",
                    },
                   @{
                        WMZTreeName:@"3_2_3级",
                        WMZTreeCurrentId:@"3_2_3",
                        WMZTreeParentId:@"3",
                    },
            ]
        }
    ]

配置参数

可配置参数 类型 作用
cueerntId NSString 当前节点ID 必传
parentId NSString 父节点ID,不传表示第一级
name NSString 显示的文本
isExpand BOOL 是否展开 默认NO
canSelect BOOL 能否选中 默认NO
data id 携带的其他数据

其他具体看demo

依赖

无任何依赖

安装

CocoaPods

  1. 将 cocoapods 更新至最新版本.
  2. 在 Podfile 中添加 pod 'WMZTreeView'
  3. 执行 pod installpod update
  4. 导入 #import "WMZTreeView.h"。

手动安装

  1. 下载 WMZTreeView 文件夹内的所有内容。
  2. 将 WMZTreeView 内的源文件添加(拖放)到你的工程。
  3. 导入 #import "WMZTreeView.h"

系统要求

该库最低支持 iOS 9.0Xcode 9.0

许可证

使用 MIT 许可证,详情见 LICENSE 文件。

个人主页

使用过程中如果有什么bug欢迎给我提issue 我看到就会解决 简书地址

More Repositories

1

WMZDialog

功能最多样式最多的弹窗,支持普通/底部/日期/地区/日历/选择/编辑/分享/菜单/自定义弹窗等,支持多种动画,链式编程调用(Pop-up windows with the most functions and styles, support normal/bottom/date/region/calendar/select/edit/share/menu/custom pop-up windows, etc., support multiple animations, chain programming calls)
Objective-C
1,056
star
2

WMZDropDownMenu

🌹一个能几乎实现所有App各种类型筛选菜单的控件,可悬浮,目前已实现闲鱼/美团/Boss直聘/京东/饿了么/淘宝/拼多多/赶集网/美图外卖等等的筛选菜单,可以自由调用代理实现自己想组装的筛选功能和UI,且控件的生命周期自动管理,悬浮自动管理🌹(A control that can implement almost all types of filtering menus of all apps)
Objective-C
723
star
3

WMZPageController

分页控制器,替换UIPageController方案,具备完整的生命周期,多种指示器样式,多种标题样式,可悬浮,支持ios13暗黑模式(仿优酷,爱奇艺,今日头条,简书,京东等多种标题菜单) (Pagination controller with full life cycle, multiple indicator styles, multiple title styles)
Objective-C
659
star
4

WMZBanner

最好用的轻量级轮播图+卡片样式+自定义样式,链式编程语法(可实现各种样式的轮播图,大多需要的功能都有)(The best lightweight carousel + card style + custom style, chain programming syntax)
Objective-C
376
star
5

WMZTags

多功能标签,具备增加,删除,多选,单选等功能。 链式编程实现,所有属性均可自定义(不维护了)
Objective-C
93
star
6

WMZCode

封装的图片验证,文字验证,滑动验证
Objective-C
86
star
7

WMZFloatView

仿微信悬浮窗,可直接协议加入悬浮窗或者直接调用方法注册,可自定义转场动画
Objective-C
43
star
8

WMZForm

一个功能强大的表单组件,可自定义(A powerful form component that can be customized)
Objective-C
39
star
9

WMZTableView

封装的tableview model控制显示,可快速开发表单之类的页面
Objective-C
36
star
10

WMZRouter

简单易使用的路由
Objective-C
19
star
11

WMZQuickKit

链式优雅快速构建常用控件(Chain programming to quickly and elegantly write components)
Objective-C
3
star
12

wwmz

1
star