自己封装UIPickerView加一个时间范围

1.添加代理:

@interface ViewController ()<UIPickerViewDataSource,UIPickerViewDelegate>

2.添加存储数组和视图:

//视图

@property(nonatomic,strong)UIPickerView *pickerView;

//日期

@property(nonatomic,strong)NSMutableArray *dayDateArray;

//消失

@property(nonatomic,strong)NSMutableArray *hoursDateArray;

3创建视图:

- (void)creatBtn{
    UIButton *btn = [[UIButton alloc] initWithFrame:CGRectMake(30, 30, 100, 30)];
    [btn setTitle:@"点击" forState:UIControlStateNormal];
    [btn setTintColor:[UIColor blackColor]];
    [btn setBackgroundColor:[UIColor redColor]];
    [btn addTarget:self action:@selector(btnAction:) forControlEvents:UIControlEventTouchUpInside];
    [self.view addSubview:btn];
}

- (void)btnAction:(UIButton *)sender{
    [self creatPicker];
}

- (void)creatPicker{

    NSString *strValue ;
    for (int i = 0; i < 24; i++) {
        if (i + 1 < 10) {
            strValue  = [NSString stringWithFormat:@"0%d:00 - 0%d:00",i ,i + 1];
        }else if(i + 1 == 10){
            strValue = [NSString stringWithFormat:@"0%d:00 - %d:00",i ,i + 1];
        }else if(i + 1>10 && i + 1 < 24){
             strValue = [NSString stringWithFormat:@"%d:00 - %d:00",i ,i + 1];
        }else if (i+1 == 24) {
            strValue = [NSString stringWithFormat:@"%d:00 - 00:00",i];
        }
        [self.hoursDateArray addObject:strValue];
    }

    NSInteger dateMonth = 0;
    NSInteger dateDay = 0;

    for (int i = 0; i< 31; i++) {
        NSDate *date = [NSDate dateWithTimeIntervalSinceNow:i*(24*60*60)];

        NSCalendar *calendar = [NSCalendar currentCalendar];
        NSDateComponents *comps = [calendar components:(NSCalendarUnitMonth |NSCalendarUnitDay ) fromDate:date];
        dateMonth = [comps month];
        dateDay = [comps day];
        NSString *dateVaule ;
        if (i == 0) {
            dateVaule = @"今天";
        }else{
            dateVaule = [NSString stringWithFormat:@"%ld月%ld日",dateMonth,dateDay];
        }
        [self.dayDateArray addObject:dateVaule];
    }

    self.pickerView = [[UIPickerView alloc] initWithFrame:CGRectMake(50, 50, 200, 200)];
    self.pickerView.autoresizingMask = UIViewAutoresizingFlexibleWidth;
    self.pickerView.dataSource = self;
    self.pickerView.delegate = self;
    self.pickerView.showsSelectionIndicator = YES;
    [self.view addSubview:self.pickerView];
}

//重写协议方法:

- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView{
    return 2;
}

- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component{
    if (component == 0) {
        return self.dayDateArray.count;
    }else{
        return self.hoursDateArray.count;
    }

}

- (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view{
    UILabel *myView = nil;
    if (component == 0) {
        myView = [[UILabel alloc] initWithFrame:CGRectMake(0.0, 0.0, 100, 30)] ;

        myView.textAlignment = NSTextAlignmentCenter;

        myView.text = [self.dayDateArray objectAtIndex:row];

        myView.font = [UIFont systemFontOfSize:17];         //用label来设置字体大小

        myView.backgroundColor = [UIColor clearColor];
    }else{
        myView = [[UILabel alloc] initWithFrame:CGRectMake(0.0, 0.0, 150, 30)];

        myView.text = [self.hoursDateArray objectAtIndex:row];

        myView.textAlignment = NSTextAlignmentCenter;

        myView.font = [UIFont systemFontOfSize:17];

        myView.backgroundColor = [UIColor clearColor];
    }
    return myView;
}

- (CGFloat)pickerView:(UIPickerView *)pickerView widthHeightForComponent:(NSInteger)component{

    if (component == 0) {
        return 100;
    }else{
        return 150;
    }
}

- (CGFloat)pickerView:(UIPickerView *)pickerView rowHeightForComponent:(NSInteger)component{
    return 30;
}

- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component{

    if((self.dayDateArray.count-1>=row && component == 0)&&(self.hoursDateArray.count-1>= row && component == 1)){
    NSString *strVaule = [NSString stringWithFormat:@"%@  %@",[self.dayDateArray objectAtIndex:row],[self.hoursDateArray objectAtIndex:row-2]];
    NSLog(@"%@",strVaule);
    }
}

效果:

时间: 2024-10-26 14:18:36

自己封装UIPickerView加一个时间范围的相关文章

使用eval()将json字符串转换为对象要多加一个小括号

使用eval()将json字符串转换为对象要多加一个小括号:关于eval()函数的具体用法这里就不多介绍了,具体可以参阅javascript的eval()方法一章节,下面就介绍一下为什么使用eval()函数将json格式字符串转换为对象的时候,需要多嵌套一层小括号,下面就介绍一下它的原因,希望能够对需要的朋友带来帮助.先看一段转换代码: var jsonStr='{"webName":"蚂蚁部落","webAddress":"青岛市南区

linux命令后加一个 &amp;

默认情况下,进程是在前台运行的,这时就把shell给占据了,我们无法进行其它操作.对于那些没有交互的进程,很多时候,我们希望将其在后台启动,可以在启动参数的时候加一个'&'实现这个目的. tianfang > run &    [1] 11319    tianfang > 进程切换到后台的时候,我们把它称为job.切换到后台时会输出相关job信息,以前面的输出为[1] 11319例:[1]表示job ID是1,11319表示进程ID是11319. 切换到后台的进程,仍然可以用

css,js文件后面加一个版本号

由于前几天,更新了项目,更新的文件有js文件,今天客人截图过来,我发现修改之后的效果没有显示出来,我回复说清理浏览器缓存.到了晚上,客人找老板,说还没有处理到這个,说客人不懂這个.所以想到之前自己为了避免浏览器缓存js,css文件,在js,css后面加一个版本号,时间随机.這次笔者是在js后面加了一个版本号参数,应该可以强制到客人的浏览器浏览這个画面时,重新下载修改之后的js文件.如: <script type="text/javascript" src="js/tes

sh里没有多行注释,只能每一行加一个#号

sh里没有多行注释,只能每一行加一个#号.只能像这样: #-------------------------------------------- # 这是一个自动打ipa的脚本,基于webfrogs的ipa-build书写: # https://github.com/webfrogs/xcode_shell/blob/master/ipa-build # 功能:自动为etao ios app打包,产出物为14个渠道的ipa包 # 特色:全自动打包,不需要输入任何参数 #------------

iOS 每三个数字加一个逗号

//每三个数字加一个逗号 : 123,234,324 + (NSString *)countNumAndChangeformat:(NSString *)num { int count = 0; long long int a = num.longLongValue; while (a != 0) { count++; a /= 10; } NSMutableString *string = [NSMutableString stringWithString:num]; NSMutableStr

跟我一起学extjs5(41--增加一个自定义模块(源码下载)[2销售合同加入菜单和模块展示])

跟我一起学extjs5(41--增加一个自定义模块[2销售合同加入菜单和模块展示]) 在前面一节销售合同模块的信息导入系统后,需要在菜单中加入这个模块,但是现在菜单模块没法利用此系统进行编辑(多模块的层次现在还没有加入),因此只能在数据库里加入一条记录了: 加入后,重新启动一下tomcat,进入系统,就能在菜单"合同管理"下,看到 "销售合同"的菜单条了,点击一下,看看结果吧. 以上是自动生成"销售合同"的模块界面,这个就是最初介绍的模块的列表.

STP 3 - 生成树协议中4个guard 和 3个fast加一个filter

最近出的几个问题总是和生成树协议有问题,复习的时候顺带总结,温故而知新. 先上一个大牛总结的图(Vinny), 总结的非常好,你看完后面的文章再来看这张图就会会心一笑 - i got it ! 先讲下计时器,不论什么协议总是有些计时器,Hello数据包什么的.尤其到路由协议,怎么建立邻居关系,怎么通知拓扑改变,各种不同路由协议是各显神通. 所以在理解的时候最好要了解为什么这些协议需要计时器等等,这样我们就可以以不变应万变. STP Timer  (计时器的配置在当前交换机成为根桥时有用,因为默认

iOS圆形图片裁剪,原型图片外面加一个圆环

/** *  在圆形外面加一个圆环 */ - (void)yuanHuan{ //0.加载图片 UIImage *image = [UIImage imageNamed:@"AppIcon1024"]; //图片的宽度 CGFloat imageWH = image.size.width; //设置圆环的宽度 CGFloat border = 1; //大圆形的宽度高度 CGFloat ovalWH = imageWH + 2 * border; //1.开启位图上下文 UIGraph

iOS圆形图片裁剪,以及原型图片外面加一个圆环

废话不多说,直接上代码 #import "ViewController.h" @interface ViewController () @property (nonatomic,strong)UIImageView *imageView; @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; self.imageView = [[UIImageView alloc] initWith