UIDatePickerView和UIPickerView
2016-10-15 本文已影响248人
NateLam
用于选择日期, 可以选择显示是年月日还是具体时间都包含
继承于UIPickerView, 但是不用像UIPickerView一样签代理, 但必须先new, 再设置frame, 两句必须分开;
而且要想实时更新界面的值必须添加target事件
主要就是下面这三个方法, 如需要的时候.hidden = NO即可
#pragma mark - 懒加载
- (UIDatePicker *)datePicker{
if (!_datePicker) {
_datePicker = [UIDatePicker new];
_datePicker.frame = CGRectMake(0, SCREEN_HEIGHT - 200 * SCALE_HEIGHT, SCREEN_WIDTH, 200 * SCALE_HEIGHT);
_datePicker.datePickerMode = UIDatePickerModeDate; // 设置模式 这里是 年月日 没有上下午
_datePicker.locale = [NSLocale localeWithLocaleIdentifier:@"zh"]; // 设置地区 这里是
[_datePicker addTarget:self action:@selector(rollAction:) forControlEvents:(UIControlEventValueChanged)];
[self.view addSubview:_datePicker];
}
return _datePicker;
}
#pragma mark birthFordatter
- (NSDateFormatter *)birthFordatter{
if (!_birthFordatter) {
_birthFordatter = [NSDateFormatter new];
_birthFordatter.dateFormat = @"YYYY-MM-dd";
}
return _birthFordatter;
}
#pragma mark 监听滚动的方法 滚动日期键盘时候走的方法
- (void)rollAction:(UIDatePicker *)sender{
// NSLog(@"%@", [self.birthFordatter stringFromDate:sender.date]);
NSIndexPath *indexPath = [NSIndexPath indexPathForRow:3 inSection:0];
NAMineAccountTableViewCell *cell = [_tableView cellForRowAtIndexPath:indexPath];
cell.labelOfContent.text = [self.birthFordatter stringFromDate:sender.date];
}
-----------------------我是分割线, 下面说UIPickerView------------------------
不用设定frame
#pragma mark genderPickerView
- (UIPickerView *)genderPickerView{
if (!_genderPickerView) {
_genderPickerView = [UIPickerView new];
_genderPickerView.delegate = self;
_genderPickerView.dataSource = self;
[self.view addSubview:_genderPickerView];
_genderPickerView.hidden = YES;
}
return _genderPickerView;
}
UIPickerView, 需要签俩协议并实现一些协议方法
协议方法
#pragma mark - UIPickerViewDelegate
#pragma mark 列
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView{
return 1;
}
#pragma mark 每列多少行
- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component{
return 3;
}
#pragma mark pickerView内容
-(NSString*)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component{
// NSArray *countArray =self.foodNameArray[component];
// NSString *rowString =countArray[row];
// return rowString;
return _mArrOfGender[row];
}
#pragma mark pickerView滚动方法
-(void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component{
NSIndexPath *indexPath = [NSIndexPath indexPathForRow:2 inSection:0];
NAMineAccountTableViewCell *cell = [_tableView cellForRowAtIndexPath:indexPath];
cell.labelOfContent.text = _mArrOfGender[row];
}