由于之前曾经用到过下拉菜单,所以现在花一些时间回过头来细细整理了一下,逐步完善这个下拉菜单,并提供一些比较基本的功能,以便日后如果有需要的话可以进行复用,并提供给需要的人参考。下拉菜单同样分为数据源和代理方法,提供以下方法:
1 // 2 // XWDropdownMenu.h 3 // XWReusableCodeLib 4 // 5 // Created by xiao on 15/10/30. 6 // Copyright © 2015年 xiao. All rights reserved. 7 // 下拉菜单 8 9 #import <UIKit/UIKit.h> 10 11 @class XWDropdownMenu; 12 #pragma mark 数据源方法 13 @protocol XWDropdownMenuDataSource <NSObject> 14 @required 15 /** 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 @optional 30 /** 31 * 主表格每一行 分类数量 32 * @param row 行号 33 */ 34 - (NSString *)dropdownMenu:(XWDropdownMenu *)dropdownMenu countForRowInMainTable:(NSInteger)row; 35 /** 36 * 子表格每一行子数据 分类数量 37 * @param row 行号 38 */ 39 - (NSArray *)dropdownMenu:(XWDropdownMenu *)dropdownMenu subdataCountForRowInSubTable:(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 @end 51 52 #pragma mark 代理方法 53 @protocol XWDropdownMenuDelegate <NSObject> 54 55 @optional 56 - (void)dropdownMenu:(XWDropdownMenu *)dropdownMenu didSelectRowInMainTable:(NSInteger)row; 57 - (void)dropdownMenu:(XWDropdownMenu *)dropdownMenu didSelectRowInSubTable:(NSInteger)subrow inMainTable:(NSInteger)mainRow; 58 59 @end 60 61 #pragma mark 构造方法 62 @interface XWDropdownMenu : UIView 63 + (instancetype)dropdownMenu; 64 -(void)refreshMenu; 65 66 @property (nonatomic, weak) id<XWDropdownMenuDataSource> dataSource; 67 @property (nonatomic, weak) id<XWDropdownMenuDelegate> delegate; 68 69 /**主表被选中的字体颜色,默认是黑色*/ 70 @property (strong, nonatomic) UIColor *selectedRowTextColor; 71 /**该属性设置成YES,主表比较小*/ 72 @property (nonatomic, assign)BOOL isMainTableSmall; 73 @end
由于还是有一些代码的,无法在这里将所有代码贴出,只能罗列出各个方法并添加注释,并附上简单的demo和效果图
demo地址:https://github.com/xiaoyeying/XWDropdownMenuDemo.git
最后如有不足之处欢迎指正和批评,一起学习~~
时间: 2024-10-11 11:23:23