数据选择控件

数据选择控件

UIDatePicker——方便用户选择日期

作用:方便用户的日期选择,并保证日期格式正确

1.    初始化
// 初始化日期控件,不用设置宽高,因为它的宽高是固定的
UIDatePicker *datePicker = [[UIDatePicker alloc]init];

2.    常用设置
// 设置日期控件区域为简体中文
[datePicker setLocale:[[NSLocale alloc]initWithLocaleIdentifier:@"zh_Hans_CN"]];
// 设置日期控件格式
[datePicker setDatePickerMode:UIDatePickerModeDate];

3.设置日期选择控件的监听方法

// 设定日期控件监听方法
[datePicker addTarget:self action:@selector(dateValueChange:) forControlEvents:UIControlEventValueChanged];
NSDateFormatter——日期转换成字符串

NSDateFormatter专门负责日期格式的对象

// 设置日期格式
// 1. 实例化日期格式
NSDateFormatter *formatter = [[NSDateFormatter alloc]init];
// 2. 设置日期格式字符串
[formatter setDateFormat:@"yyyy-MM-dd"];
// 3. 将指定日期转换成字符串
NSString *dateString = [formatter stringFromDate:sender.date];

NSDateFormatter专门负责日期格式的对象

// 设置初始日期
NSDateFormatter *formatter = [[NSDateFormatter alloc]init];
[formatter setDateFormat:@"yyyy-MM-dd"];
NSDate *date = [formatter dateFromString:@”2000-01-01"];
[datePicker setDate:date];
UITextField扩展——设置键盘和键盘上面的工具栏

// 设置日期文本的输入键盘
[_dateText setInputView:datePicker];

// 设置键盘上面的工具控件
UIView *view = [[UIView alloc]initWithFrame:CGRectMake(0, 0, 320, 44)];
[view setBackgroundColor:[UIColor grayColor]];
[_dateText setInputAccessoryView:view];

UITextField——常用代理方法扩展

// 当文本框开始获得焦点的时候调用


- (void)textFieldDidBeginEditing:


// 当用户失去焦点的时候调用


- (void)textFieldDidEndEditing:


// 在文本框准备聚焦的时候调用,返回NO代表不允许聚焦(编辑)


- (BOOL)textFieldShouldBeginEditing:


// 在文本框准备失去焦点(退出键盘)的时候调用,返回YES代表允许退出键盘


- (BOOL)textFieldShouldEndEditing:


// 在用户每次输入的时候都会调用,返回YES代表允许输入     


- (BOOL)textField:


shouldChangeCharactersInRange:replacementString:

 
照片选择

使用UIImagePickerController可以选择照片
照片的来源UIImagePickerControllerSourceType包括:
照片库
照相机
保存的照片
使用步骤
1. 判断照片来源是否可用
2. 实例化照片选择控制器
3. 设置照片源
4. 设置是否允许编辑
5. 设置代理
6. 遵循协议
7. 显示照片选择控制器

照片选择代理方法
通过代理方法的didFinishPickingMediaWithInfo字典可以获取选中的照片图像
关闭照片选择控制器
保存选中的图像
UIPickerView——数据选择视图
作用:负责从指定的数据源中选择数据

要求:使用PickerView之前需要指定数据源

UIPickerView——数据源
数据源负责计算UIPickerView有多少列、多少行数据
数据源须遵守UIPickerViewDataSource协议,数据源方法如下:

// 返回总的列数
- (NSInteger)numberOfComponentsInPickerView:
// 返回第component列的行数
- (NSInteger)pickerView:numberOfRowsInComponent:

刷新数据方法

[pickerView reloadComponent:1];
一旦调用了这个方法,就会重新给数据源发送消息计算这列的行数、重新给代理发送消息获得这列的内容

UIPickerView——代理
代理可以给UIPickerView提供具体的数据、监听UIPickerView的一些事件
代理必须遵守UIPickerViewDelegate协议,常用代理方法如下:

// 第component列第row行显示什么字符串内容
- (NSString *)pickerView:titleForRow:forComponent:
// 每当选择了新的一行就会调用
- (void)pickerView:didSelectRow:inComponent:

UIPickerView——其他代理方法
代理方法扩展
// 第component列第row行显示什么样的UIView,最后一个view参数是用来性能优化的
- (UIView *)pickerView:viewForRow:forComponent:reusingView:
// 返回第component列每一行的高度
- (CGFloat)pickerView:rowHeightForComponent:

补充:
自定义PickerView时,需要指定显示选择指示器属性
pickerView.showsSelectionIndicator = YES;
原文地址:https://www.cnblogs.com/HJiang/p/4280415.html