SJPullDownMenu下拉菜单框架使用
SJPullDownMenu
- 快速集成类似淘宝筛选下拉菜单
- 如果页面显示不全等问题请转至:http://www.jianshu.com/p/d07c6393830c 查看使用
Getting Started【开始使用】
Manually【手动导入】
- Drag all source files under floder SJPullDownMenu to your project.【将SJPullDownMenu文件夹中的所有源代码拽入项目中】
- Import the main header file:#import "SJPullDownMenu.h"【导入主头文件:#import "SJPullDownMenu.h"】
SJPullDownMenu.h
- 代理方法
@protocol SJPullDownMenuDataSource <NSObject>
/**
* 下拉菜单列数
*
* @param pullDownMenu 下拉菜单
*
* @return 下拉菜单列数
*/
- (NSInteger)numberOfColsInMenu:(SJPullDownMenu *)pullDownMenu;
/**
* 下拉菜单每列按钮
*
* @param pullDownMenu 下拉菜单
* @param index 第几列
*
* @return 下拉菜单每列按钮
*/
- (UIButton *)pullDownMenu:(SJPullDownMenu *)pullDownMenu buttonForColAtIndex:(NSInteger)index;
/**
* 下拉菜单每列对应的控制器
*
* @param pullDownMenu 下拉菜单
* @param index 第几列
*
* @return 下拉菜单每列对应的控制器
*/
- (UIViewController *)pullDownMenu:(SJPullDownMenu *)pullDownMenu viewControllerForColAtIndex:(NSInteger)index;
/**
* 下拉菜单每列对应的高度
*
* @param pullDownMenu 下拉菜单
* @param index 第几列
*
* @return 下拉菜单每列对应的高度
*/
- (CGFloat)pullDownMenu:(SJPullDownMenu *)pullDownMenu heightForColAtIndex:(NSInteger)index;
@end
- 属性与方法
@interface SJPullDownMenu : UIView
/**
* 数据源
*/
@property (nonatomic, weak) id<SJPullDownMenuDataSource> dataSource;
/**
* 默认值
*/
@property (nonatomic, strong) NSArray *defaultTitleArray;
/**
* 分割线颜色
*/
@property (nonatomic, strong) UIColor *separateLineColor;
/**
* 蒙版颜色
*/
@property (nonatomic, strong) UIColor *coverColor;
/**
* 隐藏分隔线
*/
@property (nonatomic, assign) BOOL hiddenSeparateLine;
/**
* 动画持续时间
*/
@property (nonatomic, assign) CGFloat animateTime;
/**
* 刷新菜单
*/
- (void)reloadMenu;
@end
- 更新标题的通知名称
/**
* 更新菜单文字通知名称(如果没有冲突,建议不要修改)
*/
static NSString * const SJUpdateMenuTitle = @"SJUpdateMenuTitle";
初始化菜单
// 菜单按钮默认值
NSArray *defaultTitleArray = @[@"综合排序", @"价格优先", @"更多"];
// 初始化
SJPullDownMenu *menuView = [[SJPullDownMenu alloc] init];
// 设置尺寸
menuView.frame = CGRectMake(0, 20, self.view.bounds.size.width, 44);
// 设置数据源
menuView.dataSource = self;
// 设置每列按钮默认值
menuView.defaultTitleArray = defaultTitleArray;
[self.view addSubview:menuView];
self.menuView = menuView;
// 添加内容控制器
[self addContentViewController];
初始化内容控制器
/**
* 添加内容控制器
*/
- (void)addContentViewController {
SJTestOneViewController *testOneVC = [[SJTestOneViewController alloc] init];
SJTestTwoViewController *testTwoVC = [[SJTestTwoViewController alloc] init];
SJTestThreeViewController *testThreeVC = [[SJTestThreeViewController alloc] init];
[self addChildViewController:testOneVC];
[self addChildViewController:testTwoVC];
[self addChildViewController:testThreeVC];
}
实现代理方法
// 返回下拉菜单多少列
- (NSInteger)numberOfColsInMenu:(SJPullDownMenu *)pullDownMenu
{
return self.childViewControllers.count;
}
// 返回下拉菜单每列按钮
- (UIButton *)pullDownMenu:(SJPullDownMenu *)pullDownMenu buttonForColAtIndex:(NSInteger)index
{
SJButton *button = [SJButton buttonWithType:UIButtonTypeCustom];
[button setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
[button setTitleColor:[UIColor lightGrayColor] forState:UIControlStateSelected];
[button setImage:[UIImage imageNamed:@"icon_more_highlighted"] forState:UIControlStateNormal];
[button setImage:[UIImage imageNamed:@"icon_more"] forState:UIControlStateSelected];
return button;
}
// 返回下拉菜单每列对应的控制器
- (UIViewController *)pullDownMenu:(SJPullDownMenu *)pullDownMenu viewControllerForColAtIndex:(NSInteger)index
{
return self.childViewControllers[index];
}
// 返回下拉菜单每列对应的高度
- (CGFloat)pullDownMenu:(SJPullDownMenu *)pullDownMenu heightForColAtIndex:(NSInteger)index
{
// 设置高度
if (index == 0) {
return 390;
} else if (index == 1) {
return 130;
} else if (index == 2) {
return 260;
} else {
return 130;
}
}
更新标题
为了使用更灵活,使用通知来更新标题的方式,只需要在需要的地方使用通知就可以了
- 首先导入头文件
#import "SJPullDownMenu.h"- 在需要的地方使用
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
// 更新标题
[[NSNotificationCenter defaultCenter] postNotificationName:SJUpdateMenuTitle object:self userInfo:@{@"title" : cell.textLabel.text}];
}
```
注:这边的userInfo只可发送一个Key值,Key的name不限制

【SJPullDownMenu】框架github下载地址:https://github.com/shaojianye/SJPullDownMenu.git
【SJPullDownMenu】框架码云下载地址:https://git.oschina.net/miaomiaoshen/SJPullDownMenu.git
SJPullDownMenu下拉菜单框架使用的更多相关文章
- 10个优秀的 HTML5 & CSS3 下拉菜单制作教程
下拉菜单是一个很常见的效果,在网站设计中被广泛使用.通过使用下拉菜单,设计者不仅可以在网站设计中营造出色的视觉吸引力,但也可以为网站提供了一个有效的导航方案.使用 HTML5 和 CSS3 可以更容易 ...
- 11个优秀的HTML5 & CSS3下拉菜单制作教程
下拉菜单是一个很常见的效果,在网站设计中被广泛使用.通过使用下拉菜单,设计者不仅可以在网站设计中营造出色的视觉吸引力,但也可以为网站提供了一个有效的导航方案.使用HTML5和CSS3可以更容易创造视觉 ...
- 10个优秀的 HTML5 & CSS3 下拉菜单制作教程
下拉菜单是一个非经常见的效果.在站点设计中被广泛使用.通过使用下拉菜单.设计者不仅能够在站点设计中营造出色的视觉吸引力,但也能够为站点提供了一个有效的导航方案.使用 HTML5 和 CSS3 能够更e ...
- Bootstrap框架(基础篇)之按钮,网格,导航栏,下拉菜单
一,按钮 注意:虽然在Bootstrap框架中使用任何标签元素都可以实现按钮风格,但个人并不建议这样使用,为了避免浏览器兼容性问题,个人强烈建议使用button或a标签来制作按钮. 框架中提供了基础按 ...
- html 布局;css3+jq 下拉菜单;table分页动态添加行;html5本地存储;简单易用的html框架
简单好用的html框架,预览图见最后: 源码: 1.页面布局使用table: table 嵌套 +iframe 布局: 2.下拉菜单为jq+css3 动画; css input 无边框,select下 ...
- yii2框架dropDownList的下拉菜单用法介绍
Yii2.0 默认的 dropdownlist 的使用方法. 代码如下 复制代码 <?php echo $form->field($model, 'name[]')->dropDo ...
- yii框架中的下拉菜单和单选框
yii中的下拉菜单: 第一种: <?= $form->field($model, 'parent_id')->dropDownList(ArrayHelper::map($data, ...
- Html5+Mui前端框架,开发记录(四):下拉菜单绑定数据、搜索、时间控件
1.下拉菜单绑定数据,选择后回传值 1)html: <div class="mui-input-row"> <label>xxx:</label> ...
- 吴裕雄 Bootstrap 前端框架开发——Bootstrap 按钮:内嵌下拉菜单的按钮组
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...
随机推荐
- android ANR产生原因和解决办法
转自http://blog.sina.com.cn/s/blog_618199e60101kvbl.html ANR (Application Not Responding) ANR定义:在Andro ...
- 再次记录 Visual Studio 2015 CTP 5 的一个坑
接上一篇:升级 Visual Studio 2015 CTP 5 的坑.坑.坑 升级到 VS2015 CTP 之后,今天要改项目中的一个东西,然后就不得不把 C# 6.0 改变的语法代码中改了下(之前 ...
- ECharts使用心得
ECharts百度旗下图标插件,在展示地图.雷达图等方面有很好的支持. 应用场景: 自动生成X轴的数据: 设置:xAxis的type=value || type=time 并且设置series的dat ...
- ManagementClass类解析和C#如何获取硬件的相关信息
在.NET的项目中,有时候需要获取计算机的硬件的相关信息,在C#语言中需要利用ManagementClass这个类来进行相关操作. 现在先来介绍一下ManagementClass类,首先看一下类的继承 ...
- Javascript常用正则表达式汇总
一.匹配数字和字符串 整数或者小数:^[0-9]+\.{0,1}[0-9]{0,2}$ 只能输入数字:"^[0-9]*$". 只能输入n位的数 字:"^\d{n}$&qu ...
- .net 实现Office文件预览 Word PPT Excel 2015-01-23 08:47 63人阅读 评论(0) 收藏
先打个广告: .Net交流群:252713569 本人QQ :524808775 欢迎技术探讨, 近期公司要求上传的PPT和Word都需要可以在线预览.. 小弟我是从来没有接触过这一块的东西 感觉很棘 ...
- commons-lang包中我们常用的类的作用
commons-lang包中对我们有用的类主要有: 1.StringUtils 该类主要提供对字符串的操作,对null是安全的,主要提供了字符串查找,替换,分割,去空白,去掉非法字符等等操作 2.Ob ...
- IoC原理-使用反射/Emit来实现一个最简单的IoC容器
从Unity到Spring.Net,到Ninject,几年来陆陆续续用过几个IoC框架.虽然会用,但也没有一直仔细的研究过IoC实现的过程.最近花了点时间,下了Ninject的源码,研究了一番,颇有收 ...
- PetaPoco利用ODP.NET Managed Driver连接Oracle
大概几年之前用PetaPoco做过一个Oracle的项目,开发的时候还需要安装oracle的client,非常麻烦.调试好环境后,一直到项目结束都不敢重装系统.最近又有一个需求需要读取oracle,可 ...
- 常用的WebForm 控件
首先回忆一下Html页中的12个表单元素 .文本类 文本框 <input type="text" id="" name="" valu ...