简述

在应用的一些设置中经常要用到一些Picker来快速帮助用户选定取值,一般会用到的有UIDatePicker,UIPickerView以及UIImagePickerController。

初始界面




如图,在搭建好的界面,实现方法来完成各个选择。首先是日期选择

UIDatePicker


主要需要设置的属性有
locale
datePickerMode

    UIDatePicker *datePicker = [[UIDatePicker alloc] init];
datePicker.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"zh_Hans_cn"];
datePicker.datePickerMode = UIDatePickerModeDate; NSString *stdDate = @"1990-01-01";
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
formatter.dateFormat = @"yyyy-MM-dd";
[datePicker setDate:[formatter dateFromString:stdDate] animated:YES];
[datePicker addTarget:self action:@selector(showDate:) forControlEvents:UIControlEventValueChanged]; _dateField.inputView = datePicker;
_dateField.text = stdDate;

在这里,我们也对它的初始日期进行了设置。


对齐事件进行监听即可达到目的,并没有代理协议。

- (void)showDate:(UIDatePicker *)datePicker
{
NSDate *date = datePicker.date;
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
formatter.dateFormat = @"yyyy-MM-dd";
NSString *outputString = [formatter stringFromDate:date]; _dateField.text = outputString;
}


UIImagePickerController


如果不自定义选取照片视图的话,实现照片或者拍照选取功能十分简单,设置
协议就可以快速调用。

    UIImagePickerController *imagePC = [[UIImagePickerController alloc] init];
//从照片库中选择图片, 也可以设置相机
imagePC.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
//允许对图片进行简单的编辑
imagePC.allowsEditing = YES;
imagePC.delegate = self;
[self presentViewController:imagePC animated:YES completion:nil];

协议方法获取图片并进行设置


- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
const NSString *REditedImageIdentifier = @"UIImagePickerControllerEditedImage"; UIImage *image = info[REditedImageIdentifier];
[_imageButton setImage:image forState:UIControlStateNormal]; [picker dismissViewControllerAnimated:YES completion:nil];
}

UIPickerView


在Component较多的时候,PickerView稍微要复杂一些。首先初始化和设置属性

- (void)pickerViewAndMethod
{
UIPickerView *pickerView = [[UIPickerView alloc] init];
pickerView.delegate = self;
pickerView.dataSource = self;
//显示选择活动器
pickerView.showsSelectionIndicator = YES;
_cityField.inputView = pickerView;
_cityField.text = @"北京 - 海淀";
}

实现数据源和代理方法,来刷新自身数据和界面。

- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView
{
return rComponentCount;
} - (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component
{
if (component == rProvinceComponent)
{
return _cityList.count;
}
else
{
NSInteger i = [pickerView selectedRowInComponent:rProvinceComponent];
NSArray *arr = _cityList[i][@"city"];
return arr.count;
}
} - (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component
{
if (component == rProvinceComponent)
{
NSString *proName = _cityList[row][@"province"];
return proName;
}
else
{
NSInteger i = [pickerView selectedRowInComponent:rProvinceComponent];
NSString *cityName = _cityList[i][@"city"][row];
return cityName;
}
} - (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component
{
[pickerView reloadComponent:rCityComponent]; NSInteger proIndex = [pickerView selectedRowInComponent:rProvinceComponent];
NSString *proName = _cityList[proIndex][@"province"]; NSInteger cityIndex = [pickerView selectedRowInComponent:rCityComponent];
NSString *cityName = _cityList[proIndex][@"city"][cityIndex]; _cityField.text = [NSString stringWithFormat:@"%@ - %@", proName, cityName];
}

数据源来自于自己写的一个简单的Plist文件。一个数组中包含多个字典。
这样一个使用各种Picker进行设置的功能就完成了。





demo示例点击打开链接




以上为本篇博客全部内容,欢迎指正和交流。转载注明出处~

最新文章

  1. 在mongoose中使用$match对id失效的解决方法
  2. swift-func(函数)
  3. javascript将毫秒转换成hh:mm:ss的形式
  4. 详解 “Android UI”设计官方教程
  5. JAVA XMLConfiguration解决StringXML及多节点
  6. 创建类模式(零):简单/静态工厂(Static Factory)
  7. 【C#基础】 读取json某个键值
  8. 2014牡丹江——Hierarchical Notation
  9. Controller和View的交互
  10. 传输层socket通讯之java实现
  11. apollo1.7.1初探(二)使用apollo订阅主题,发布主题消息
  12. ORACLE EBS 表空间控制
  13. python基础(五)
  14. Angular中不同的组件间传值与通信的方法
  15. .NET拾忆:FileSystemWatcher 文件监控
  16. list、vector、deque互相拷贝
  17. Aspose Linux下字体找不到报错
  18. 敏捷开发-代码提交流程& 安装gerrit
  19. 修改ES分片规则
  20. ubuntu16 Intellij Idea Install&config

热门文章

  1. IE常见的CSS的BUG(一)
  2. ssh命令
  3. WebApi2官网学习记录---批量处理HTTP Message
  4. AVT Vimba与OpenCV环境配置
  5. asp.net mvc 删除栏目、栏目下又有子栏目的处理方式
  6. QTableWidget简单操作
  7. mysql_connect(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead in
  8. Scala学习笔记--隐式转换
  9. uiautomator <一> 编译运行
  10. js 浮点数加减问题