最近要实现如下的下拉式二级目录效果:

思路很简单,左右二级目录其实就是两个UITableView,点击左边cell实现右边table刷新。
关键代码如下:


初始化变量:
NSInteger _leftIndex;//关键变量,记录一级目录点击cell的index,用来生成二级目录//初始化一二级目录tableview
-(void)initsubview{//一级目录_leftTableView = [UITableView new];[_leftTableView setFrame:CGRectMake(0, 0, screenwith/5*2, self.frame.size.height)];_leftTableView.tag = 10;_leftTableView.delegate = self;_leftTableView.dataSource =self;_leftTableView.backgroundColor = [UIColor whiteColor];[_leftTableView setTableFooterView:[[UIView alloc] initWithFrame:CGRectZero]];[self addSubview:_leftTableView];//二级目录_rightTableView = [UITableView new];[_rightTableView setFrame:CGRectMake(screenwith/5*2, 0, screenwith/5*3, self.frame.size.height)];_rightTableView.tag = 20;_rightTableView.delegate = self;_rightTableView.dataSource =self;_rightTableView.separatorStyle=UITableViewCellSelectionStyleNone;_rightTableView.backgroundColor = [UIColor whiteColor];[self addSubview:_rightTableView];self.userInteractionEnabled=YES;}//获取目录数据 ,一层二层数据一次性获取 此处是本地获取 一般情况下是网络获取json数据
-(void)getData{NSString *newPath=[NSString stringWithFormat:@"%@%@%@",[[NSBundle mainBundle]resourcePath],@"/",@"data"];//根据文件路径读取数据NSData *jdata = [[NSData alloc]initWithContentsOfFile:newPath];// 格式化成json数据NSDictionary* jsonObject = [NSJSONSerialization JSONObjectWithData:jdata options:kNilOptions error:nil];NSArray* arr = (NSArray*)jsonObject[@"data"];_leftArr = [CourseSeries mj_objectArrayWithKeyValuesArray:arr];__weak typeof(self) weakself= self;//刷新ui要回到主线程dispatch_async(dispatch_get_main_queue(), ^{[weakself.leftTableView reloadData];});
}//一级二级菜单cell数目
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{if(tableView.tag == 10){return [_leftArr count];}else {if(_leftArr.count==0){return 0;}//根据_leftIndex获取二级菜单数据CourseSeries *serie = _leftArr[_leftIndex];//二级菜单数目return [serie.list count];}
}
-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{return 42;
}-(UITableViewCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{if(tableView.tag==10){//一级目录cell实现return cell;}else {//二级目录cell实现 ,注意二级目录的实现要通过全局变量_leftIndex获取初始化数据CourseSeries *cs = _leftArr[_leftIndex];//cell具体赋值return cell;}
}//点击一级二级目录的操作
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{[tableView deselectRowAtIndexPath:indexPath animated:YES];if(tableView.tag == 10){//注意全局变量_leftIndex的取值_leftIndex = indexPath.row;//根据_leftIndex刷新二级目录[_rightTableView reloadData];}else {_rightIndex = indexPath.row;//根据_leftIndex获得当前二级目录数据CourseSeries* sr = _leftArr[_leftIndex];//再根据indexPath定位当前电机的二级目录具体cellNSArray* arr = [courseTypeMJ mj_objectArrayWithKeyValuesArray:sr.list];courseTypeMJ* ct = arr[indexPath.row];//点击二级目录cell的具体操作}}

最终实现效果如下:

具体实现效果还要加上遮盖层,可参见上传的demo。
实现效果比较简陋,但是大体效果就是这样。

demo下载:https://github.com/tyrantkemp/XZMenu.git

实现类似美团的下拉分级式菜单相关推荐

  1. Android抽屉(SlidingDrawer --类似android通知栏下拉效果)

    Android抽屉(SlidingDrawer)的实现发 - 红黑联盟 http://www.2cto.com/kf/201301/182507.html 可动态布局的Android抽屉之基础 htt ...

  2. 【Axure高保真原型】下拉分级选择器

    今天和大家分享下拉分级选择器的原型模板,该原型模板由中继器制作,使用时只需要填写好中继器表格,即可自动生成交互效果 [原型预览] 用电脑点击左下方阅读原文或复制打开下面的原型预览地址 https:// ...

  3. android 美团下拉刷新,美团外卖下拉刷新效果实现方法

    美团外卖下拉刷新效果实现方法,我们的下拉刷新的效果是在android-Ultra-Pull-To-Refresh框架上做的扩展,这是一款非常强大的下拉刷新框架,有着默认的下拉刷新动画,当然如果我们要实 ...

  4. DOM 案例——(美团外卖下拉框菜单、半透明——信息滑入、模态窗口拖拽效果、放大镜效果、滚动条滑到一定位置的固定导航栏、12306购票网站多级联动、斗鱼TV无规则弹幕特效、百度搜索条动态输入下拉瀑布)

    目录 1.缓动动画--美团外卖下拉框菜单 2.半透明--信息滑入 3.模态窗口拖拽效果 4.放大镜效果 5.滚动条滑到一定位置的固定导航栏 6.12306购票网站多级联动 7.斗鱼TV无规则弹幕特效 ...

  5. IOS 类似抖音下拉刷新与自定义上拉加载

    IOS 类似抖音下拉刷新与自定义上拉加载 最近UICollectionView中使用了pageEnabled,MJRresh直接使用时出现偏移.这里就暂时考虑简单的做法. 首先考虑在UICollect ...

  6. 一个WinForm记事本程序(包含主/下拉/弹出菜单/打开文件/保存文件/打印/页面设置/字体/颜色对话框/剪切版操作等等控件用法以及记事本菜单事件/按键事件的具体代码)...

    (一).说明 功能类似Windows 操作系统自带的记事本.  一个WinForm记事本程序(包含主/下拉/弹出 菜单/打开保存对话框等控件用法以及记事本菜单事件的具体代码) (二).图片示例 (三) ...

  7. excel不能插入activex控件_用excel做下拉多选菜单

    先看视频: 下拉多选菜单https://www.zhihu.com/video/1070640311239249920 在日常工作中,有时候我们需要在单元格中输入多个固定内容的某几个项,手动输入很麻烦 ...

  8. 美团,大众下拉菜单的实现

           最近项目中用到了类似美团,大众的下拉菜单.于是上网找资料,下了个demo,两个listview实现的,感觉不是很好,后面又找到了ExpandTab这个自定义控件,封装了两个listvie ...

  9. android 美团下拉菜单,Android仿美团分类下拉菜单实例代码

    本文实例为大家分享了Android仿美团下拉菜单的实现代码,分类进行选择,供大家参考,具体内容如下 效果图 操作平台 AS2.0 第三方框架:butterknife build.gradle depe ...

最新文章

  1. python保存代码_python操作文件读写新增保存代码
  2. linux命令:sed工具替换文件内容
  3. Elastic Job入门(1) - 简介
  4. php: +1天, +3个月, strtotime(): +1 day, +3 month
  5. catia知识工程_【开团】CATIA超全直播课程&实例讲解!
  6. Android Fragment切换动画效果
  7. mysql cluster error 4010 157_关于mysql-cluster的一些问题想讨教各位经验人事
  8. ajax请求实用的封装方法
  9. 2022电工杯AB题思路分析
  10. 香奈儿机器人t恤_最hot超模:开场Chanel的机器人 真面目居然是小精灵?
  11. html+css+js百度首页制作+附源代码+实现简单【百度一下】功能
  12. 【华为云服务器初体验】-关于华为云服务器
  13. 酷开系统壁纸模式,百变画作颠覆想象
  14. 自学编程的好方法,直接省了几万块钱报班,不收藏就可惜了
  15. android圆角设置
  16. 若依微服务框架ruoyi-cloud使用手册(持续更新中)
  17. Spark系列之Spark在不同集群中的架构
  18. java代码生成_Java代码生成器CodeX4J介绍
  19. linux下和嵌入式linux下通过udp接收来自vlc播放器的视频并转发播放
  20. Android手机误删文件后的数据恢复

热门文章

  1. java 反射api_个人编程学习网 - Java-操作反射其他的API
  2. java迷宫类编程题_第十届蓝桥杯省赛java类B组 试题 E:迷宫 (动态规划之回溯法)...
  3. 修改Tomcat窗口名称
  4. 常见视频编码比较大全 常见视频解码技术资料1
  5. Adobe放出P图新研究:就算丢了半个头,也能逼真复原
  6. 手机App都在偷听我说话?窃听疑云全球密布,科技公司连连喊冤
  7. PyTorch 1.0稳定版正式发布,并向开发者提供免费AI课程
  8. 手机芯片进入7纳米时代!高通确认年内发布,搭载5G,更强AI
  9. 腾讯超级大脑发布!马化腾要用三张智能网络,打造AI in All通用操作系统
  10. 这么多人,AI怎么知道你说的是哪个? | 李飞飞团队CVPR论文+代码