iOS 树形结构菜单(参照以前大神写的博客)

这篇博客介绍了如何在iOS中创建树形结构菜单,参考了其他大神的工作,并针对缺失的数据进行了补充。主要内容包括:定义数据格式、创建Node模型、实现TreeTableView以及在ViewController中的应用。
摘要由CSDN通过智能技术生成

说明:写的东西是参照某位大神写的博客,但是我自己的数据他有些没有,然后我就根据大神的博客重新写了下,希望对大家有用


1.数据的形式,请求下来的数据将会是如下格式

@property (nonatomic, strong) NSString *itemParentId;//父节点的id
@property (nonatomic, strong) NSString *itemId;//本节点的id
@property (nonatomic, strong) NSString *itemName;//本节点的名称
@property (nonatomic, assign) BOOL expand;//该节点是否处于展开状态
这些数据中有父节点的ID和自身的ID,还有自身的名字,并且自己写一个属性expand,之后来判断该节点是否处于展开或者收起状态


2.那么根据这个节点我们创建一个Model,代码如下,代码中我写好了注释

创建一个Node类继承于NSObject

Node.h中的代码:

#import <Foundation/Foundation.h>

@interface Node : NSObject

//这里是数据
@property (nonatomic, strong) NSString *itemParentId;//父节点的id
@property (nonatomic, strong) NSString *itemId;//本节点的id
@property (nonatomic, strong) NSString *itemName;//本节点的名称
@property (nonatomic, strong) NSString *itemIndex;//本节点在该级菜单中的索引值(这个值可以不用关注,这是我自己用到的数据)
@property (nonatomic, assign) BOOL expand;//该节点是否处于展开状态
@property (nonatomic, strong) NSString *siteSSCID;//(这个值也不用关注,也是我自己的数据的东西)


/**
 *  快速实例化该对象模型
 *
 *  @param itemParentId 父节点的id
 *  @param itemId       本节点的id
 *  @param itemName     本节点的名称
 *  @param itemIndex    本节点在该级菜单中的索引值
 *  @param expand       该节点是否处于展开状态
 *
 *  @return 一个node实例
 */
- (instancetype)initWithParentId:(NSString *)itemParentId nodeId:(NSString *)itemId name:(NSString *)itemName index:(NSString *)itemIndex siteSSCID:(NSString *)itemSiteSSCID expand:(BOOL)expand;

@end


Node.m中的代码

#import "Node.h"

@implementation Node

- (instancetype)initWithParentId:(NSString *)itemParentId nodeId:(NSString *)itemId name:(NSString *)itemName index:(NSString *)itemIndex siteSSCID:(NSString *)itemSiteSSCID expand:(BOOL)expand{
    self = [self init];
    if (self) {
        self.itemParentId = itemParentId;
        self.itemId = itemId;
        self.itemName = itemName;
        self.itemIndex = itemIndex;
        self.siteSSCID = itemSiteSSCID;
        self.expand = expand;
    }
    return self;
}

@end

这样做完之后,我们就把数据的Model构建完成了,现在根据这个Model来创建树型菜单


3.创建一个TreeTableView类继承于UITableView,其中的注释在代码中,我就直接粘贴代码了

TreeTableView.h中的代码

#import <UIKit/UIKit.h>

@interface TreeTableView : UITableView


@property (nonatomic , strong) NSArray *dataS;//传递过来已经组织好的数据(全量数据)
@property (nonatomic , strong) NSMutableArray *tempData;//用于存储数据源(部分数据,这个数据是根据dataS来
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值