封装PickerTableViewCell

作者: makemake | 来源:发表于2018-07-19 13:37 被阅读8次

平时常用的一些控件,闲的时候单独封装出来
封装弹出选择视图的tableviewcell OC和Swift两个版本 ,demo地址点这里

gif

OC:

选择日期DatePickerCell的使用:

 DatePickerCell *cell = [DatePickerCell dequeueReusableWithTableView:tableView];
 cell.selectDatePickerBlock = ^(NSDate *date) {
     NSLog(@"%@",date);
 };

弹出点击选择ClickPickerCell:

ClickPickerCell *cell = [ClickPickerCell dequeueReusableWithTableView:tableView dataSource:@[@"男",@"女",@"ladyBoy"]];
__weak typeof (cell)weakCell = cell;
cell.selectClickPickerBlock = ^(NSInteger index, NSString *str) {
    [weakCell setDetailTitle:str];
};

滑动选择PickerViewCell:

 PickerViewCell *cell = [PickerViewCell dequeueReusableWithTableView:tableView withDataSource:@[@[@"a",@"b",@"c",@"d"],@[@"1",@"2",@"3",@"4"],@[@"🐔",@"🐶",@"🐖",@"🐂"]]];
 __weak typeof (cell)weakCell = cell;
 cell.selectPickerViewBlock = ^(NSArray *selectArray){
     [weakCell setDetailTitle:[selectArray componentsJoinedByString:@""]];
 };
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{

    UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];

    [cell becomeFirstResponder];
}

Swift:

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        if indexPath.row == 0 {
            let cell = MKDatePickerCell.dequeueReusable(WithTableView: tableView)
            cell.datePickerSelectBlock = {
               print($0)
            }
            return cell
        }else if indexPath.row == 1 {

            let cell = MKClickPickerCell.dequeueReusable(WithTableView: tableView, dataSource: array1)
            cell.selectClickPickerBlock = {
               print("index = \($0),str = \($1)")
            }
            return cell
            
        }else{
            let cell = MKPickerViewCell.dequeueReusable(WithTableView: tableView, dataSource: array2)
            cell.selectPickerViewBlock = { array in
              print(array.joined())  
            }
            return cell
        }

    }
    
    func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
        let celll = tableView.cellForRow(at: indexPath)
        guard let cell = celll else { return }
        if cell.isFirstResponder {
            cell.resignFirstResponder()
        }else{
            cell.becomeFirstResponder()
        }
    }

相关文章

  • 封装PickerTableViewCell

    平时常用的一些控件,闲的时候单独封装出来 PickerTableViewCell 封装弹出选择试图的tablevi...

  • JavaScript面向对象与设计模式

    1. 面向对象 1.1 封装 封装的目的在于将信息隐藏。广义的封装不仅包括封装数据和封装实现,还包括封装类型和封装...

  • 02.OOP面向对象-3.一些理解

    对封装的理解?封装,类本身就是一个封装,封装了属性和方法。方法也是封装,对一些业务逻辑的封装。私有也是封装,将一些...

  • 封装微信小程序请求

    封装wx.request 封装api 封装请求调用

  • python 文件及文件夹的操作和异常捕获

    1、面向对象的特征:封装、继承、多态 1.1、封装: 函数一种封装,封装了一些逻辑代码 类也是一种封装,封装属性和...

  • node学习4

    Nodejs 路由模块封装、封装仿照 express 的路由 Nodejs 路由模块封装 封装仿照 express...

  • 封装组件

    封装tab组件封装曝光加载组件封装轮播组件 代码

  • MVVM在网络中应用(OkHttp+Retrofit+Gson+

    1.封装请求地址常量类 2.封装网络工具类 3.封装接口类 4.封装DTO类——即返回的数据封装模型 5.封装请求...

  • view的封装

    封装view较为简单,封装tableview比较麻烦,封装tableview的方法后面会有。 view的封装 如果...

  • 记录封装好的axios

    拦截封装 路由封装

网友评论

    本文标题:封装PickerTableViewCell

    本文链接:https://www.haomeiwen.com/subject/rkhtmftx.html