自定义弹出TableView

2018-02-01  本文已影响0人  心无城府半点深丶

创建一个自定义的View

.h文件

#import <UIKit/UIKit.h>
@class CoinsTypeModel;

typedef void(^SelectCionsTypeBlock)(CoinsTypeModel  *  model);
@interface SelectCionsTypeView : UIView

@property (nonatomic, copy) SelectCionsTypeBlock        selectCionsBlock;
@property (nonatomic, copy) NSMutableArray        *      cionsList;

-(void)show;

.m文件

#import "SelectCionsTypeView.h"#import "AppDelegate.h"#import "CionsTypeModel.h"@interface SelectCionsTypeView(){

    UIView        *        _darkView;

    UIView        *        _bottomView;

}

@property (nonatomic, strong) UITableView        *          tableView;

@end

@implementation SelectCionsTypeView

- (instancetype)init

{

    self = [super init];

    if (self) {

        [self setup];

    }

    return self;

}

- (void)setup {

    AppDelegate *app = (AppDelegate *)[UIApplication sharedApplication].delegate;

    self.frame = CGRectMake(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT);

    [app.window addSubview:self];

    UIView *darkView = [[UIView alloc]init];

    darkView.backgroundColor =RGBA(0, 0, 0, 0.5);

    darkView.alpha = 0;

    darkView.frame = CGRectMake(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT);

    [self addSubview:darkView];

    _darkView = darkView;

    UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(tapClick)];

    [_darkView addGestureRecognizer:tap];

    UIView *bottomView = [[UIView alloc]init];

    bottomView.backgroundColor = [UIColor whiteColor];

    bottomView.alpha = 1;

    bottomView.frame = CGRectMake(0, SCREEN_HEIGHT, SCREEN_WIDTH, SCREEN_HEIGHT/2);

    [self addSubview:bottomView];

    _bottomView = bottomView;

    UIButton *cancelBtn = [UIButton buttonWithType:UIButtonTypeCustom];

    cancelBtn.frame = CGRectMake(0, _bottomView.height-50*KScaleH, _bottomView.width, 50*KScaleH);

    [cancelBtn setTitle:@"取消" forState:UIControlStateNormal];

    [cancelBtn setTitleColor:LINE_COLOR forState:UIControlStateNormal];

    [cancelBtn handleControlEvent:UIControlEventTouchUpInside withBlock:^{

        [self dismiss];

    }];

    [_bottomView addSubview:cancelBtn];

    UIView *line = [[UIView alloc]initWithFrame:CGRectMake(0, cancelBtn.top-0.5, _bottomView.width, 0.5)];

    line.backgroundColor = LINE_COLOR;

    [_bottomView addSubview:line];

}

-(void)setCionsList:(NSMutableArray *)cionsList{

    _cionsList=cionsList;

    [self.tableView reloadData];

}

#pragma mark - public

- (void)show {

    [UIView animateWithDuration:0.2 animations:^{

        [self.superview endEditing:YES];

    } completion:^(BOOL finished) {

        [UIView animateWithDuration:0.3 animations:^{

            _darkView.alpha = 0.5;

            _bottomView.frame = CGRectMake(0, SCREEN_HEIGHT-SCREEN_HEIGHT/2, SCREEN_WIDTH, SCREEN_HEIGHT/2);

        }];

    }];

}

#pragma mark - private

- (void)dismiss {

    [UIView animateWithDuration:0.3 animations:^{

        _bottomView.frame = CGRectMake(0, SCREEN_HEIGHT, SCREEN_WIDTH, SCREEN_HEIGHT/2);

        _darkView.alpha = 0;

    } completion:^(BOOL finished) {

        [self removeFromSuperview];

    }];

}

- (void)tapClick {

    [self dismiss];

}

#pragma mark - delegate & datasource

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {

    return self.cionsList.count;

}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    static NSString *cellID = @"tagCell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellID];

    if (!cell) {

        cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellID];

    }

    CionsTypeModel  * model=self.cionsList[indexPath.row];

    cell.textLabel.text=model.cn_name;

    return cell;

}

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {

    if (self.selectCionsBlock) {

        self.selectCionsBlock(self.cionsList[indexPath.row]);

    }

    [self dismiss];

}

- (UITableView *)tableView {

    if (!_tableView) {

        UITableView *table = [[UITableView alloc]initWithFrame:CGRectMake(0, 0, _bottomView.width, _bottomView.height-50-0.5) style:UITableViewStylePlain];

        table.delegate = self;

        table.dataSource = self;

        [_bottomView addSubview:table];

        _tableView = table;

    }

    return _tableView;

}

@end

在ViewController里面调用

SelectCionsTypeView * typeView=[[SelectCionsTypeView alloc]init];

        [typeView show];

        typeView.cionsList=self.dataList;

        typeView.selectCionsBlock = ^(CoinsTypeModel *model) {

            self.coinsTypeModel=model;

            _tagIndex = 0;

            self.cionsTypeTF.text=self.coinsTypeModel.cn_name

        };

想要自定义弹出视图的小伙伴们可以参考一下,非常简单,点击弹出自定义的tableView,可以自定义Model进行赋值,

上一篇下一篇

猜你喜欢

热点阅读