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. Dijkstra算法优先队列实现与Bellman_Ford队列实现的理解

    /* Dijkstra算法用优先队列来实现,实现了每一条边最多遍历一次. 要知道,我们从队列头部找到的都是到 已经"建好树"的最短距离以及该节点编号, 并由该节点去更新 树根 到其 ...

  2. 使用Ubuntu 12.04作为日常电脑环境

    搜狗输入法出来之后,我觉得有必要写一篇博客说明一下,如何使用Ubuntu作为日常的电脑系统.我使用的Ubuntu版本是12.04,没有使用Ubuntukylin,因为的电脑比较老,使用那个版本,电脑有 ...

  3. iOS开发之地图与定位

    无论是QQ还是微信的移动客户端都少不了定位功能,之前在微信demo中没有添加定位功能,今天就写个定位的小demo来了解一下定位和地图的东西.地图和定位看上去是挺高大上一东西,其实用法比TableVie ...

  4. 【Java心得总结七】Java容器下——Map

    我将容器类库自己平时编程及看书的感受总结成了三篇博文,前两篇分别是:[Java心得总结五]Java容器上——容器初探和[Java心得总结六]Java容器中——Collection,第一篇从宏观整体的角 ...

  5. ASP.NET实现微信功能(2)(服务号高级群发)

    前面写了一篇文章,关于微信的:http://www.cnblogs.com/kmsfan/p/4047097.html 今天打算来写本系列的第二批文章,服务号后台群发. 在写本篇文章之前,我们先来看看 ...

  6. JavaScript代码模块化的正规方法

    RequireJS-CommonJS-AMD-ES6 Import/Export详解 为什么起了一个这个抽象的名字呢,一下子提了四个名词分别是:RequireJS,CommonJS,AMD,ES6,答 ...

  7. js作用域和变量提升

    Function declarations and variable declarations are always moved (“hoisted”) invisibly to the top of ...

  8. ASP.NET WEB API必知必会:特性路由

    一.什么是特性路由? 特性路由是指将RouteAttribute或自定义继承自RouteAttribute的特性类标记在控制器或ACTION上,同时指定路由Url字符串,从而实现路由映射,相比之前的通 ...

  9. 关于本月第一天,本月最后一天的SQL代码

    DATEADD(mm, DATEDIFF(mm,0,getdate()), 0)  --返回本月第一天 dateadd(ms,-3,DATEADD(mm, DATEDIFF(m,0,getdate() ...

  10. 【转】App开放接口api安全性—Token签名sign的设计与实现

    前言 在app开放接口api的设计中,避免不了的就是安全性问题,因为大多数接口涉及到用户的个人信息以及一些敏感的数据,所以对这些接口需要进行身份的认证,那么这就需要用户提供一些信息,比如用户名密码等, ...