iOS通过pickerView自定义简单的时间选择器
2015-08-11 15:06
579 查看
/** 初始化pickerView */ -(void)initPickerView { int x_hour = 50; int height_hour = 120; int toolBar_height = 40; float width_hour = MainScreen_Width/2 - x_hour; float y_hour = MainScreen_Height/2 - height_hour - toolBar_height; self.hourPickerView = [[UIPickerView alloc] initWithFrame:CGRectMake(x_hour, y_hour, width_hour, height_hour)]; self.hourPickerView.dataSource = self; self.hourPickerView.delegate = self; self.hourPickerView.backgroundColor = [UIColor whiteColor]; [self addSubview:self.hourPickerView]; self.minutesPickerView = [[UIPickerView alloc] initWithFrame:CGRectMake(x_hour+width_hour, y_hour, width_hour, height_hour)]; self.minutesPickerView.dataSource = self; self.minutesPickerView.delegate = self; self.minutesPickerView.backgroundColor = [UIColor whiteColor]; [self addSubview:self.minutesPickerView]; UIView *toolBarView = [[UIView alloc] initWithFrame:CGRectMake(x_hour,self.hourPickerView.frame.size.height+self.hourPickerView.frame.origin.y, 2*width_hour, toolBar_height)]; // toolBarView.backgroundColor = [UIColor orangeColor]; [self addSubview:toolBarView]; NSArray *btnTitleArr = [NSArray arrayWithObjects:@"取消",@"确定", nil]; for(int i=0; i < [btnTitleArr count]; i++) { UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom]; btn.frame = CGRectMake(i*toolBarView.frame.size.width/2,0, toolBarView.frame.size.width/2, toolBarView.frame.size.height); [btn setTitle:btnTitleArr[i] forState:UIControlStateNormal]; [btn setBackgroundColor:[UIColor orangeColor]]; [btn addTarget:self action:@selector(btnAction:) forControlEvents:UIControlEventTouchUpInside]; btn.tag = 100+i; [toolBarView addSubview:btn]; if(i == 1) { UIView *lineView = [[UIView alloc] initWithFrame:CGRectMake(btn.frame.origin.x,btn.frame.origin.y, 0.5, btn.frame.size.height)]; lineView.backgroundColor = [UIColor grayColor]; [toolBarView addSubview:lineView]; } } //设置默认选择当前时间 [self.hourPickerView selectRow:currentHour inComponent:0 animated:YES]; [self.minutesPickerView selectRow:3 inComponent:0 animated:YES]; } /** 初始化数据源 */ -(void)_setArr { hourArr = [NSMutableArray array]; mintuesArr = [NSMutableArray array]; currentHour = [[NSDate date] getHour]; timeSelect = [NSString stringWithFormat:@"%02d:%02d",[[NSDate date] getHour],30]; for(int i=0; i<24; i++) { [hourArr addObject:[NSString stringWithFormat:@"%d",i]]; } for(int i=0; i<6; i++) { [mintuesArr addObject:[NSString stringWithFormat:@"%d",i*10]]; } } -(void)btnAction:(UIButton *)sender { switch (sender.tag) { case 100://取消 { if(self.hidePickerView) { self.hidePickerView(sender.tag,@""); } } break; case 101://确定 { if(self.hidePickerView) { self.hidePickerView(sender.tag,timeSelect); } } break; default: break; } } #pragma mark - UIPickerViewDataSource - (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView{ return 1; } -(NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component{ if(pickerView == self.hourPickerView) { return [hourArr count]; } else { return [mintuesArr count]; } } - (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component { if(pickerView == self.hourPickerView) { selectHour = [NSString stringWithFormat:@"%02d",[hourArr[row] intValue]]; } else if(pickerView == self.minutesPickerView) { selectMin = [NSString stringWithFormat:@"%02d",[mintuesArr[row] intValue]]; } timeSelect = [NSString stringWithFormat:@"%@:%@",selectHour,selectMin]; } #pragma makr - UIPickerViewDelegate - (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)componen { if(pickerView == self.hourPickerView) { return [hourArr objectAtIndex:row]; } else { return [mintuesArr objectAtIndex:row]; } } - (void)selectRow:(NSInteger)row inComponent:(NSInteger)component animated:(BOOL)animated { }
使用方法:
CustomDatePickView *datepickView = [[CustomDatePickView alloc] initWithFrame:self.view.bounds];
//通过block响应调用事件和接受选择的时间值
__weak CustomDatePickView *wDatePickerView = datepickView;
datepickView.hidePickerView = ^(NSInteger senderTag,NSString *selectTime){
switch (senderTag) {
case 100:
{
[wDatePickerView removeFromSuperview];
}
break;
case 101:
{
[wDatePickerView removeFromSuperview];
selectTimeStr = selectTime;
NSString *selectDate = @"";
for(UIButton *btn in self.storedBtnView.subviews)
{
if(btn.selected)
{
switch (btn.tag) {
case 100://今天
{
selectDate = [NSString stringWithFormat:@"%d-%02d-%02d %@ %@",[dateDic[@"year"] intValue],[dateDic[@"month"] intValue],[dateDic[@"day"] intValue],[self _getWeakDay:btn],selectTime];
[self updateBookingBtnUI:selectDate];
}
break;
case 101://明天
{
selectDate = [NSString stringWithFormat:@"%d-%02d-%02d %@ %@",[dateDic[@"nextYear"] intValue],[dateDic[@"tomorrowMonth"] intValue],[dateDic[@"tomorrow"] intValue],[self _getWeakDay:btn],selectTime];
[self updateBookingBtnUI:selectDate];
}
break;
case 102://后天
{
selectDate = [NSString stringWithFormat:@"%d-%02d-%02d %@ %@",[dateDic[@"lastYear"] intValue],[dateDic[@"afterDayMonth"] intValue],[dateDic[@"afterDay"] intValue],[self _getWeakDay:btn],selectTime];
[self updateBookingBtnUI:selectDate];
}
break;
default:
break;
}
}
}
}
break;
default:
break;
}
};
[self.view addSubview:datepickView];
相关文章推荐
- iOS中多线程原理与runloop介绍
- iOS学习之block总结及block内存管理(必看)
- iOS中造成循环引用的集中情况
- iOS根据所得到的开始时间计算结束的时间
- iOS 用NSNumberFormatter进行数字的格式化
- iOS入门(十)指针
- iOS入门(九)结构体
- libGDX引擎之存入数据到keychain(IOS)
- iOS入门(八)声明文件
- iOS入门(七)函数
- iOS入门(六)二维数组
- IOS 保存图片至相册
- iOS入门(五)数组排序
- ios--c DAY_11
- iOS转义字符
- iOS入门(四)数组
- iOS入门(三)循环结构
- 【iOS开发系列】颜色渐变
- ios--c DAY_10
- iOS学习之block