简述

在应用的一些设置中经常要用到一些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示例点击打开链接




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

IOS中的各种Picker的更多相关文章

  1. IOS中调用系统的电话、短信、邮件、浏览功能

    iOS开发系列--通讯录.蓝牙.内购.GameCenter.iCloud.Passbook系统服务开发汇总 2015-01-13 09:16 by KenshinCui, 26990 阅读, 35 评 ...

  2. ios中从相册:相机中获取图片信息

    ios中从相册/相机中获取图片信息 从相册中获取图片的信息 UIImagePickerController *imgPickView = [[UIImagePickerController alloc ...

  3. iOS 中 常用的第三方库

    现在对于我们 iOS 开发来说,基本上说不可能不使用第三方轮子啦,毕竟没那么多时间,而且自己造的轮子往往想着成为上图中的最后一个,结果却成了上图中第二个或第一个啦,当然大公司另当别论.下面我从之前用过 ...

  4. ios中摄像头/相册获取图片压缩图片上传服务器方法总结

    本文章介绍了关于ios中摄像头/相册获取图片,压缩图片,上传服务器方法总结,有需要了解的同学可以参考一下下.     这几天在搞iphone上面一个应用的开发,里面有需要摄像头/相册编程和图片上传的问 ...

  5. iOS中支付宝集成

    iOS中支付宝集成 如今各种的App中都使用了三方支付的功能,现在将我在使用支付宝支付集成过程的心得分享一下,希望对大家都能有所帮助 要集成一个支付宝支付过程的环境,大致需要: 1>公司:先与支 ...

  6. iOS中数据库应用基础

    iOS 数据库入门 一.数据库简介 1.什么是数据库? 数据库(Database) 是按照数据结构来组织,存储和管理数据的仓库 数据库可以分为2大种类 关系型数据库(主流) PC端 Oracle My ...

  7. 正则表达式在iOS中的运用

    1.什么是正则表达式 正则表达式,又称正规表示法,是对字符串操作的一种逻辑公式.正则表达式可以检测给定的字符串是否符合我们定义的逻辑,也可以从字符串中获取我们想要的特定部分.它可以迅速地用极简单的方式 ...

  8. iOS 中的 HotFix 方案总结详解

    相信HotFix大家应该都很熟悉了,今天主要对于最近调研的一些方案做一些总结.iOS中的HotFix方案大致可以分为四种: WaxPatch(Alibaba) Dynamic Framework(Ap ...

  9. iOS中使用正则

    一.什么是正则表达式 正则表达式,又称正规表示法,是对字符串操作的一种逻辑公式.正则表达式可以检测给定的字符串是否符合我们定义的逻辑,也可以从字符串中获取我们想要的特定部分.它可以迅速地用极简单的方式 ...

随机推荐

  1. mysql高可用方案MHA介绍

    mysql高可用方案MHA介绍 概述 MHA是一位日本MySQL大牛用Perl写的一套MySQL故障切换方案,来保证数据库系统的高可用.在宕机的时间内(通常10-30秒内),完成故障切换,部署MHA, ...

  2. ewebeditor下利用ckplayer增加html5 (mp4)全平台的支持

    学校数字化平台富文本编辑器一直用的ewebeditor,应该说非常的好,支持常用office文档的直接导入,极大的方便了老师们资料的上传,最近在规划整个数字化校园向全平台改版,框架采用bootstra ...

  3. DBHerperl类

    using System; using System.Collections.Generic; using System.Text; using System.Data; using System.D ...

  4. 【Solr初探】Solr安装,启动,查询,索引

    1. 安装&启动 官网:http://lucene.apache.org/solr/ 下载源代码,解压,进入根目录(我把solr放在/usr/local/solr下) 在/usr/local/ ...

  5. UITableView 属性集合

    UITableView-------表视图--继承UIScrollView并遵守NSCoding协议 属性 frame-------------设置控件的位置和大小 backgroundColor-- ...

  6. hadoop之MapReduce WordCount分析

    MapReduce的设计思想 主要的思想是分而治之(divide and conquer),分治算法. 将一个大的问题切分成很多小的问题,然后在集群中的各个节点上执行,这既是Map过程.在Map过程结 ...

  7. phantomjs 渲染

    phantomjs 可以将web页面渲染并保存为扩展名为PNG,GIF,JPEG,PDF的指定文件 render viewportSize可以改变可视窗体大小 zoomFactor调整缩放比例 cli ...

  8. requirejs的配置

    baseUrl : 所有模块的查找根路径. 当加载纯.js文件(依赖字串以/开头,或者以.js结尾,或者含有协议),不会使用baseUrl. 如未显式设置baseUrl,则默认值是加载require. ...

  9. linux管理员切换与管理员密码第一次设置

    在终端输入su - root回车来切回到超级管理员,Ubuntu的默认超级管理员root密码是随机的,即每次开机都有一个新的root密码.我们可以在终端输入命令 sudo passwd,然后输入当前用 ...

  10. File类详解

    一.File类: File类时io包中唯一代表磁盘文件本身的对象.File类定义了一些与平台无关的方法来操作文件,可以通过调用File类中的方法,实现创建.删除.重命名文件等. File类的对象主要用 ...