//.h
@protocol LJBDropListViewDelegate <NSObject>
/**
数据源行数
*/
- (NSInteger)ljbDropListView:(UIView *)dropListView;
/**
数据源内容
*/
- (NSString *)ljbDropListView:(UIView *)dropListView cellForRow:(NSInteger)row;
/**
选中内容
*/
- (void)ljbDropListView:(UIView *)dropListView didSelectRow:(NSInteger)row;
/**
默认选中行
*/
@optional
- (NSInteger)defaultShowRowLjbDropListView:(UIView *)dropListView;
@end
@interface LJBDropListView : UIImageView
@property(assign)id<LJBDropListViewDelegate> delegate;
@property(nonatomic,strong)UIView *superMainView;//主控制器
@property(assign)CGFloat edgeX;
@property(assign)CGFloat edgeY;
@property(nonatomic,strong)UITableView *tableView;
- (instancetype)initWithFrame:(CGRect)frame delegate:(id)delegate;
@property(nonatomic,weak)UILabel *resultLab;
//.m
- (instancetype)initWithFrame:(CGRect)frame delegate:(id)delegate {
if (self = [superinitWithFrame:frame]) {
self.delegate = delegate;
self.userInteractionEnabled =YES;
self.backgroundColor = [UIColorwhiteColor];
//
UILabel *resultLab = [[UILabelalloc] initWithFrame:self.bounds];
self.resultLab = resultLab;
resultLab.textAlignment =NSTextAlignmentCenter;
[selfaddSubview:resultLab];
//
UITapGestureRecognizer *tap = [[UITapGestureRecognizeralloc] initWithTarget:selfaction:@selector(showTableView:)];
[selfaddGestureRecognizer:tap];
}
returnself;
}
- (void)showTableView:(UITapGestureRecognizer *)tap {
if (self.tableView.isHidden) {
[selftapHiddenTableView:nil];
} else {
self.bgView = [[UIViewalloc] initWithFrame:self.superMainView.bounds];
UITapGestureRecognizer *tap = [[UITapGestureRecognizeralloc] initWithTarget:selfaction:@selector(tapHiddenTableView:)];
[self.bgViewaddGestureRecognizer:tap];
[self.superMainViewaddSubview:self.bgView];
[self.bgViewaddSubview:self.tableView];
[self.tableViewreloadData];
}
}
- (void)tapHiddenTableView:(UITapGestureRecognizer *)tap {
[self.bgViewremoveFromSuperview];
[self.tableViewremoveFromSuperview];
}
- (UITableView *)tableView {
if (!_tableView) {
_tableView = [[UITableViewalloc] initWithFrame:CGRectZerostyle:UITableViewStyleGrouped];
_tableView.delegate =self;
_tableView.dataSource =self;
}
//
NSInteger count = [self.delegateljbDropListView:self];
CGFloat tbX =self.frame.origin.x+self.edgeX;
CGFloat tbY =CGRectGetMaxY(self.frame)+self.edgeY;
CGFloat tbW =self.frame.size.width;
CGFloat tbH =0;
if (count <4) {
tbH = count * cellHeight;
} else {
tbH = 4 *cellHeight;
}
_tableView.frame =CGRectMake(tbX, tbY, tbW, tbH);
return_tableView;
}
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
return [self.delegateljbDropListView:self];
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
return0;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
returnnil;
}
- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section {
UIView *view = [[UIViewalloc] init];
view.tag = section;
UITapGestureRecognizer *tap = [[UITapGestureRecognizeralloc] initWithTarget:selfaction:@selector(didSelectRow:)];
[view addGestureRecognizer:tap];
view.backgroundColor = [UIColorwhiteColor];
view.frame =CGRectMake(0,0, tableView.frame.size.width,cellHeight - 1);
UILabel *label = [[UILabelalloc] init];
label.frame = view.bounds;
label.textAlignment =NSTextAlignmentCenter;
label.text = [self.delegateljbDropListView:selfcellForRow:section];
label.textColor = [UIColorblackColor];
label.font =self.resultLab.font;
[view addSubview:label];
UIView *lineView = [[UIViewalloc] init];
lineView.frame =CGRectMake(0,CGRectGetMaxY(view.frame), view.frame.size.width,1);
lineView.backgroundColor =kk_grayBg;
[view addSubview:lineView];
return view;
}
- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section {
return0.001;
}
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section {
returncellHeight;
}
- (void)didSelectRow:(UITapGestureRecognizer *)tap {
UIView *view = tap.view;
self.resultLab.text = [self.delegateljbDropListView:selfcellForRow:view.tag];
[self.delegateljbDropListView:selfdidSelectRow:view.tag];
[selftapHiddenTableView:nil];
}
- (void)setSuperMainView:(UIView *)superMainView {
_superMainView = superMainView;
if ([self.delegaterespondsToSelector:@selector(defaultShowRowLjbDropListView:)]) {
NSInteger row = [self.delegatedefaultShowRowLjbDropListView:self];
self.resultLab.text = [self.delegateljbDropListView:selfcellForRow:row];
[self.delegateljbDropListView:selfdidSelectRow:row];
}
}
//使用
- (NSInteger)ljbDropListView:(UIView *)dropListView {
if (dropListView.tag ==1) {
returnself.array1.count;
}
returnself.array2.count;
}
- (NSString *)ljbDropListView:(UIView *)dropListView cellForRow:(NSInteger)row {
if (dropListView.tag ==1) {
returnself.array1[row];
}
returnself.array2[row];
}
- (void)ljbDropListView:(UIView *)dropListView didSelectRow:(NSInteger)row {
NSLog(@"tag:%zd,row:%zd",dropListView.tag,row);
}
- (NSInteger)defaultShowRowLjbDropListView:(UIView *)dropListView {
if (dropListView.tag ==1) {
return0;
}
return2;
}