SJPullDownMenu


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下拉菜单框架使用的更多相关文章

  1. 10个优秀的 HTML5 & CSS3 下拉菜单制作教程

    下拉菜单是一个很常见的效果,在网站设计中被广泛使用.通过使用下拉菜单,设计者不仅可以在网站设计中营造出色的视觉吸引力,但也可以为网站提供了一个有效的导航方案.使用 HTML5 和 CSS3 可以更容易 ...

  2. 11个优秀的HTML5 & CSS3下拉菜单制作教程

    下拉菜单是一个很常见的效果,在网站设计中被广泛使用.通过使用下拉菜单,设计者不仅可以在网站设计中营造出色的视觉吸引力,但也可以为网站提供了一个有效的导航方案.使用HTML5和CSS3可以更容易创造视觉 ...

  3. 10个优秀的 HTML5 &amp; CSS3 下拉菜单制作教程

    下拉菜单是一个非经常见的效果.在站点设计中被广泛使用.通过使用下拉菜单.设计者不仅能够在站点设计中营造出色的视觉吸引力,但也能够为站点提供了一个有效的导航方案.使用 HTML5 和 CSS3 能够更e ...

  4. Bootstrap框架(基础篇)之按钮,网格,导航栏,下拉菜单

    一,按钮 注意:虽然在Bootstrap框架中使用任何标签元素都可以实现按钮风格,但个人并不建议这样使用,为了避免浏览器兼容性问题,个人强烈建议使用button或a标签来制作按钮. 框架中提供了基础按 ...

  5. html 布局;css3+jq 下拉菜单;table分页动态添加行;html5本地存储;简单易用的html框架

    简单好用的html框架,预览图见最后: 源码: 1.页面布局使用table: table 嵌套 +iframe 布局: 2.下拉菜单为jq+css3 动画; css input 无边框,select下 ...

  6. yii2框架dropDownList的下拉菜单用法介绍

    Yii2.0 默认的 dropdownlist 的使用方法.  代码如下 复制代码 <?php echo $form->field($model, 'name[]')->dropDo ...

  7. yii框架中的下拉菜单和单选框

    yii中的下拉菜单: 第一种: <?= $form->field($model, 'parent_id')->dropDownList(ArrayHelper::map($data, ...

  8. Html5+Mui前端框架,开发记录(四):下拉菜单绑定数据、搜索、时间控件

    1.下拉菜单绑定数据,选择后回传值 1)html: <div class="mui-input-row"> <label>xxx:</label> ...

  9. 吴裕雄 Bootstrap 前端框架开发——Bootstrap 按钮:内嵌下拉菜单的按钮组

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

随机推荐

  1. android ANR产生原因和解决办法

    转自http://blog.sina.com.cn/s/blog_618199e60101kvbl.html ANR (Application Not Responding) ANR定义:在Andro ...

  2. 再次记录 Visual Studio 2015 CTP 5 的一个坑

    接上一篇:升级 Visual Studio 2015 CTP 5 的坑.坑.坑 升级到 VS2015 CTP 之后,今天要改项目中的一个东西,然后就不得不把 C# 6.0 改变的语法代码中改了下(之前 ...

  3. ECharts使用心得

    ECharts百度旗下图标插件,在展示地图.雷达图等方面有很好的支持. 应用场景: 自动生成X轴的数据: 设置:xAxis的type=value || type=time 并且设置series的dat ...

  4. ManagementClass类解析和C#如何获取硬件的相关信息

    在.NET的项目中,有时候需要获取计算机的硬件的相关信息,在C#语言中需要利用ManagementClass这个类来进行相关操作. 现在先来介绍一下ManagementClass类,首先看一下类的继承 ...

  5. Javascript常用正则表达式汇总

    一.匹配数字和字符串 整数或者小数:^[0-9]+\.{0,1}[0-9]{0,2}$ 只能输入数字:"^[0-9]*$". 只能输入n位的数 字:"^\d{n}$&qu ...

  6. .net 实现Office文件预览 Word PPT Excel 2015-01-23 08:47 63人阅读 评论(0) 收藏

    先打个广告: .Net交流群:252713569 本人QQ :524808775 欢迎技术探讨, 近期公司要求上传的PPT和Word都需要可以在线预览.. 小弟我是从来没有接触过这一块的东西 感觉很棘 ...

  7. commons-lang包中我们常用的类的作用

    commons-lang包中对我们有用的类主要有: 1.StringUtils 该类主要提供对字符串的操作,对null是安全的,主要提供了字符串查找,替换,分割,去空白,去掉非法字符等等操作 2.Ob ...

  8. IoC原理-使用反射/Emit来实现一个最简单的IoC容器

    从Unity到Spring.Net,到Ninject,几年来陆陆续续用过几个IoC框架.虽然会用,但也没有一直仔细的研究过IoC实现的过程.最近花了点时间,下了Ninject的源码,研究了一番,颇有收 ...

  9. PetaPoco利用ODP.NET Managed Driver连接Oracle

    大概几年之前用PetaPoco做过一个Oracle的项目,开发的时候还需要安装oracle的client,非常麻烦.调试好环境后,一直到项目结束都不敢重装系统.最近又有一个需求需要读取oracle,可 ...

  10. 常用的WebForm 控件

    首先回忆一下Html页中的12个表单元素 .文本类 文本框 <input type="text" id="" name="" valu ...