数据选择控件
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;