一、概述
如下图所示,我们平常经常会用到弹框选择的菜单列表框,比如商城的选择框,评论举报的选择框等等,这里封装了一个简单的弹框,gitHub地址为:菜单选择弹框
无图标样式:
有图标样式:
二、代码说明
先看下协议,通过以下三个协议方法给AlertTableView赋值。
@protocolAlertTableViewDelegate
//提供数据源
- (NSMutableArray*)alertTableVieDataSource;
//更改对应的cell样式
- (void)alertTableView:(AlertTableViewCell*)alertTableViewCell cellForRowAtIndexPath:(NSIndexPath*)indexPath;
//每一个cell的高度
- (CGFloat)alertTableView:(AlertTableView*)alertTableView heightForRowAtIndexPath:(NSIndexPath*)indexPath;
@end
以下是必要的属性设置
@property (nonatomic, assign) CGRect globalFrame; //AlertTableView的frame
@property (nonatomic,assign) CGRect tableViewFrame; //tableView的frame
@property (nonatomic, copy) TapCompletionBlock tapBlock; //点击当前AlertTableView的回调
@property (nonatomic, weak) id delegate;
@property (nonatomic, assign) ArrowAlignmentType arrowAlignment; //箭头位置
@property (nonatomic, copy) SelectAlertTableViewBlock selectBlock; //选中cell的回调
三、使用说明
设置AlertTableView:
- (void)setUpAlertTableView {
//设置弹出选项view
AlertTableView*alertTableView = [[AlertTableViewalloc]initWithFrame:CGRectMake(375-120,64,115,128)];
alertTableView.backgroundColor= [UIColorlightGrayColor];
alertTableView.arrowAlignment=ArrowRightType;//设置箭头位置
alertTableView.selectBlock= ^(NSIndexPath*indexPath) {
if(indexPath.row==0) {
NSLog(@"点击了我的订单");
}elseif(indexPath.row==1) {
NSLog(@"点击了购物车");
}elseif(indexPath.row==2) {
NSLog(@"点击了邮寄地址");
}
};
alertTableView.delegate=self;
_alertTableView= alertTableView;
}
实现代理方法:
#pragma mark - AlertTableViewDelegate 弹框
//提供数据源
- (NSMutableArray*)alertTableVieDataSource {
return self.alertTableDataArr;
}
//更改对应的cell样式
- (void)alertTableView:(AlertTableViewCell*)alertTableViewCell cellForRowAtIndexPath:(NSIndexPath*)indexPath {
alertTableViewCell.tableTextLable.text=_alertTableDataArr[indexPath.row]
alertTableViewCell.backgroundColor= [UIColororangeColor];
alertTableViewCell.tableTextLable.font= [UIFontsystemFontOfSize:12];
alertTableViewCell.tableTextLable.textColor= [UIColorwhiteColor];
// [alertTableViewCell setTableImageViewHidden:YES];
alertTableViewCell.tableImageView.image = [UIImage imageNamed:@"starlevelfull"]; //设置cell图标,并关掉上一行setTableImageViewHidden
}
//每一个cell 的高度
- (CGFloat)alertTableView:(AlertTableView*)alertTableView heightForRowAtIndexPath:(NSIndexPath*)indexPath {
return 44;
}
网友评论