由于之前曾经用到过下拉菜单,所以现在花一些时间回过头来细细整理了一下,逐步完善这个下拉菜单,并提供一些比较基本的功能,以便日后如果有需要的话可以进行复用,并提供给需要的人参考。下拉菜单同样分为数据源和代理方法,提供以下方法:
1 // 2 // XWDropdownMenu.h 3 // 4 // 5 // Created by xiao on 15/10/30. 6 // Copyright © 2015年 xiao. All rights reserved. 7 // 下拉菜单 8 9 #import10 11 @class XWDropdownMenu;12 #pragma mark 数据源方法13 @protocol XWDropdownMenuDataSource 14 @required15 /**16 * 主表格一共有多少行17 */18 - (NSInteger)numberOfRowsInMainTable:(XWDropdownMenu *)dropdownMenu;19 /**20 * 主表格每一行的标题21 * @param row 行号22 */23 - (NSString *)dropdownMenu:(XWDropdownMenu *)dropdownMenu titleForRowInMainTable:(NSInteger)row;24 /**25 * 主表格每一行的子数据 根据数组显示子表每行内容26 * @param row 主表行号27 */28 - (NSArray *)dropdownMenu:(XWDropdownMenu *)dropdownMenu subdataForRowInMainTable:(NSInteger)row;29 @optional30 /**31 * 主表格每一行 分类数量32 * @param row 行号33 */34 - (NSString *)dropdownMenu:(XWDropdownMenu *)dropdownMenu countForRowInMainTable:(NSInteger)row;35 /**36 * 子表格每一行子数据 分类数量 根据数组显示子表每行提示数字37 * @param row 主表行号38 */39 - (NSArray *)dropdownMenu:(XWDropdownMenu *)dropdownMenu subdataCountForRowInMainTable:(NSInteger)row;40 /**41 * 主表格每一行的图标42 * @param row 行号43 */44 - (NSString *)dropdownMenu:(XWDropdownMenu *)dropdownMenu iconForRowInMainTable:(NSInteger)row;45 /**46 * 主表格每一行的选中图标47 * @param row 行号48 */49 - (NSString *)dropdownMenu:(XWDropdownMenu *)dropdownMenu selectedIconForRowInMainTable:(NSInteger)row;50 @end51 52 #pragma mark 代理方法53 @protocol XWDropdownMenuDelegate 54 55 @optional56 - (void)dropdownMenu:(XWDropdownMenu *)dropdownMenu didSelectRowInMainTable:(NSInteger)row;57 - (void)dropdownMenu:(XWDropdownMenu *)dropdownMenu didSelectRowInSubTable:(NSInteger)subrow inMainTable:(NSInteger)mainRow;58 59 @end60 61 #pragma mark 构造方法62 @interface XWDropdownMenu : UIView63 + (instancetype)dropdownMenu;64 -(void)refreshMenu;65 66 @property (nonatomic, weak) id dataSource;67 @property (nonatomic, weak) id delegate;68 69 /**主表被选中的字体颜色,默认是黑色*/70 @property (strong, nonatomic) UIColor *selectedRowTextColor;71 /**该属性设置成YES,主表较小*/72 @property (nonatomic, assign)BOOL isMainTableSmall;73 @end
由于还是有一些代码的,无法在这里将所有代码贴出,只能罗列出各个方法并添加注释,并附上简单的demo和效果图
demo地址:
最后如有不足之处欢迎指正和批评,一起学习~~