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. 【开源】OSharp框架解说系列(1):总体设计及系列导航

    系列文章导航 [开源]OSharp框架解说系列(1):总体设计 [开源]OSharp框架解说系列(2.1):EasyUI的后台界面搭建及极致重构 [开源]OSharp框架解说系列(2.2):EasyU ...

  2. 【原创】机器学习之PageRank算法应用与C#实现(1)算法介绍

    考虑到知识的复杂性,连续性,将本算法及应用分为3篇文章,请关注,将在本月逐步发表. 1.机器学习之PageRank算法应用与C#实现(1)算法介绍 2.机器学习之PageRank算法应用与C#实现(2 ...

  3. ConcurrentDictionary线程不安全么,你难道没疑惑,你难道弄懂了么?

    前言 事情不太多时,会时不时去看项目中同事写的代码可以作个参考或者学习,个人觉得只有这样才能走的更远,抱着一副老子天下第一的态度最终只能是井底之蛙.前两篇写到关于断点传续的文章,还有一篇还未写出,后续 ...

  4. (第七天)DOM练习一

    动态删除元素 给定一个ul列表,点击ul中子节点进行删除 window.onload = function() { ].childNodes; () console.log(list.length); ...

  5. .cn根服务器被攻击之后

    如果是互联网行业的人员应该知道,8月25日凌晨,大批的“.cn”域名的网站都无法访问,当然包括weibo.cn等大型网站.个人比较奇怪的一件事情是,微博PC网页版是:www.weibo.com,而mo ...

  6. Web前端上万字的知识总结

    下面是自己学HTML+DIV+CSS+JS时的学习笔记,给大家分享以下,相互学习.大二时候寒假在家无聊的时候想做点事,总结了一下web前端基础的东西,下面的每个字都是自己手敲的. 1.<html ...

  7. Flume官方文档翻译——Flume 1.7.0 User Guide (unreleased version)中一些知识点

    Flume官方文档翻译--Flume 1.7.0 User Guide (unreleased version)(一) Flume官方文档翻译--Flume 1.7.0 User Guide (unr ...

  8. C语言版flappy bird黑白框游戏

    在此记录下本人在大一暑假,2014.6~8这段时间复习C语言,随手编的一个模仿之前很火热的小游戏----flappy bird.代码bug基本被我找光了,如果有哪位兄弟找到其他的就帮我留言下吧,谢谢了 ...

  9. [TSM]在调度计划的时候出现 “ANS1125E Unmatched Quotes: 'string' ”错误的替代解决办法

    环境: TSMserver:TSM 6.2.3 for Windows Server 2008 R2 TSMclient: TSM 5.5.0 for CentOS 遇到的故障: ANS1125E U ...

  10. Javascript数组常用方法

    一.forEach对数组的遍历 二.map返回经过运算的新数组 三.filter返回满足条件的新数组 四.返回数组前后元素运算的结果 五.every遍历数组每项元素是否满足某个条件,全部满足返回tru ...