封装PickerTableViewCell

平时常用的一些控件,闲的时候单独封装出来
封装弹出选择视图的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()
        }
    }

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1、通过CocoaPods安装项目名称项目信息 AFNetworking网络请求组件 FMDB本地数据库组件 SD...
    阳明AGI阅读 16,003评论 3 119
  • 话说东汉末年宦官当权朝政腐败,后有张角创建太平道,看到时局混乱,民不聊生,决定玩一把大的,于是宣扬天下:苍天已死,...
    地中海的传说阅读 404评论 0 2
  • 那一天我二十一岁,在我一生的黄金时代,我有好多奢望。我想爱,想吃,还想在一瞬间变成天上半明半暗的云,后来我才知道,...
    一只默默无闻的猪阅读 717评论 1 3
  • 第六十七章 [原文] 天下皆谓我"道"大,似不肖。夫唯大,故似不肖。若肖,久矣其细也夫!我有三宝,持而保之:一曰慈...
    道形图阅读 277评论 0 5