iOs基础篇(二十二)—— UIPickerView、UIDatePicker控件的使用
一、UIPickerView
UIPickerView是一个选择器控件,可以生成单列的选择器,也可生成多列的选择器,而且开发者完全可以自定义选择项的外观,因此用法非常灵活。
1、常用属性
(1)numberOfComponents:获取UIPickerView指定列中包含的列表项的数量。
(2)showsSelectionIndicator:控制是否显示UIPickerView中的选中标记(以高亮背景作为选中标记)。
2、常见方法
(1)- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView;
获取UIPickerView包含的列数量
(2)- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component;
该UIPickerView将通过该方法判断指定列应该包含多少个列表项
(3)- (CGFloat)pickerView:(UIPickerView *)pickerView widthForComponent:(NSInteger)component;
该方法返回的CGFloat值将作为该UIPickerView控件中指定列的宽度
(4)- (CGFloat)pickerView:(UIPickerView *)pickerView rowHeightForComponent:(NSInteger)component;
该方法返回的CGFloat值将作为该UIPickerView控件中指定列中列表项的高度
(5)- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component;
该方法返回的NSString值将作为该UIPickerView控件中指定列的列表项的文本标题
(6)- (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view;
该方法返回的UIView控件将直接作为该UIPickerView控件中指定列的指定列表项
(7)- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component;
当用户单击选中该UIPickerView控件的指定列的指定列表项时将会激发该方法
demo代码:
#import "ViewController.h"
@interface ViewController ()<UIPickerViewDataSource,UIPickerViewDelegate>{
UIPickerView *pickerView;
NSArray *nameArray;
NSArray *ageArray;
}
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
CGFloat width = self.view.frame.size.width;
pickerView = [[UIPickerView alloc] initWithFrame:(CGRect){,,width,}];
[self.view addSubview:pickerView];
pickerView.dataSource = self;
pickerView.delegate = self;
pickerView.showsSelectionIndicator = YES;
// 创建并初始化两个NSArray对象,分别作为两列的数据
nameArray = @[@"一", @"二", @"三", @"四", @"五", @"六"];
ageArray = @[@"", @"", @"", @"", @"", @""];
}
// UIPickerViewDataSource中定义的方法,该方法返回值决定该控件包含多少列
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView{
return ;// 返回2表明该控件只包含2列
}
//该方法的返回值决定该控件指定列包含多少个列表项
- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component{
if (component==) {
// 如果是第一列,返回nameArray中元素的个数
// 即nameArray包含多少个元素,第一列就包含多少个列表项
return [nameArray count];
}else
// 如果是其他列,返回ageArray中元素的个数。
// 即ageArray包含多少个元素,其他列(只有第二列)包含多少个列表项
return [ageArray count];
}
//UIPickerView中指定列的宽度
- (CGFloat)pickerView:(UIPickerView *)pickerView widthForComponent:(NSInteger)component{
if (component==) {
// 如果是第一列,宽度为50
return ;
}else
// 如果是其他列(只有第二列),宽度为80
return ;
}
- (CGFloat)pickerView:(UIPickerView *)pickerView rowHeightForComponent:(NSInteger)component{
return ;
}
//当用户选中UIPickerViewDataSource中指定列和列表项时激发该方法
- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component{
NSArray* name = [nameArray objectAtIndex:row];
// 使用一个UIAlertView来显示用户选中的列表项
UIAlertView* alert = [[UIAlertView alloc]
initWithTitle:@"提示"
message:[NSString stringWithFormat:@"你选中的%@是:%@"
, name, [ageArray objectAtIndex:row]]
delegate:nil
cancelButtonTitle:@"确定"
otherButtonTitles:nil];
[alert show];
}
//UIPickerView中指定列和列表项上显示的标题
- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component{
// 如果是第一列,返回nameArray中row索引处的元素
// 即第一列的列表项标题由nameArray集合元素决定
if (component==) {
return [nameArray objectAtIndex:row];
}else
return [ageArray objectAtIndex:row];
}

二、UIDatePicker
UIDatePicker继承自UIControl,专门用于接受日期、时间和持续时长的输入。日期选取器的各列会按照指定的风格进行自动配置,这样就让开发者不必关心如何配置表盘这样的底层操作。你也可以对其进行定制,令其使用任何范围的日期。
1、创建UIDatePicker及添加代理
(1)创建UIPickerView;
(2)将pickerView添加至视图;
(3)实现监听事件方法;
#import "ViewController.h"
@interface ViewController (){
UIDatePicker *datePicker;
}
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
datePicker = [[UIDatePicker alloc] initWithFrame:(CGRect){,,,}];
[self.view addSubview:datePicker];
[datePicker addTarget:self action:@selector(dateChange:) forControlEvents:UIControlEventValueChanged];
}
- (void)dateChange:(UIDatePicker*)dateSender{
UIDatePicker *ctrl = (UIDatePicker*)dateSender;
NSDate *date = ctrl.date;
NSLog(@"%@",date);
}
2、UIDatePicker设置显示格式
(1) 创建并初始化NSLocale;
(2) 将datePicker.locale属性set为NSLocale的值;
(3) 设置12/24小时制是根据手机本身时间显示;
NSLocale *locale = [[NSLocale alloc] initWithLocaleIdentifier:@"zw"];
datePicker.locale = locale;
3、设置DatePicker的日历
默认为当天;
[datePicker setCalendar:[NSCalendar currentCalendar]];
4、设置DatePicker的时区
[datePicker setTimeZone:[NSTimeZone defaultTimeZone]];
5、设置DatePicker的允许的最小/最大日期
minimumDate/maximunDate;
6、设置DatePicker的倒计时间
1) 设置日期选择的模
[datePicker setDatePickerMode:UIDatePickerModeCountDownTimer];
2) 设置倒计时的时长
注意:设置倒计时时长需要在确定模式之后指定
// 倒计时的时长,以秒为单位
[datePicker setCountDownDuration:10 * 60];
效果图:

7、设置分钟间隔
datePicker.minuteInterval = 15;
8、显示小时,分钟和AM/PM,这个的名称是根据本地设置的
[datePicker setDatePickerMode:UIDatePickerModeTime];
效果图:

9、显示年月日,名称根据本地设置的
[datePicker setDatePickerMode:UIDatePickerModeDate];
效果图:

10、 显示日期,小时,分钟,和AM/PM,名称是根据本地设置的
[datePicker setDatePickerMode:UIDatePickerModeDateAndTime];
效果图:

11、显示小时和分钟
[datePicker setDatePickerMode:UIDatePickerModeCountDownTimer];
效果图:

iOs基础篇(二十二)—— UIPickerView、UIDatePicker控件的使用的更多相关文章
- ios基础篇(十二)——UINavgationController的使用(三)ToolBar
UIToolBar存在于UINavigationController导航栏控制器中,而且默认被隐藏:设置UINavigationController的toolbarHidden属性可显示UIToolB ...
- ios基础篇(十四)——UITableView(二)属性及基本用法
上一篇说了UITableView的重用机制,让我们对UITableView有了简单了解,下面说说UITableView的属性及常见方法. 一.属性 1.frame:设置控件的尺寸和大小 2.backg ...
- Spring+SpringMVC+MyBatis+easyUI整合基础篇(十二)阶段总结
不知不觉,已经到了基础篇的收尾阶段了,看着前面的十几篇文章,真的有点不敢相信,自己竟然真的坚持了下来,虽然过程中也有过懒散和焦虑,不过结果还是自己所希望的,克服了很多的问题,将自己的作品展现出来,也发 ...
- ioS基础篇(十九)——UIResponder简析
UIResponder类定义了对象相应和控制事件的接口,他是UIApplication.UIView的超类,这类的实例通常被称为应答对象. 一.Responder对象 在iOS系统中,能够响应并处理事 ...
- ios基础篇(十六)——UIWebView的基本使用
UIWebView是内置的浏览器控件,可以用它来浏览网页.打开文档等.UIWebView是一个混合体,具体的功能控件内置的,实现一些基本的功能.UIWebView可以查看Html网页,pdf文件,do ...
- iOS基础篇(十五)——UIScrollView的基本用法
滚动视图(UIScrollView)通常用于显示内容尺寸大于屏幕尺寸的视图. 一.基本属性 1.CGSize contentSize :设置UIScrollView的滚动范围 2.CGPoint co ...
- iOS开发——UI进阶篇(十九)UISearchBar控件简介
最近用到搜索功能.总结一下 搜索,无疑可以使用UISearchBar控件! 那就先了解一下UISearchBar控件吧! UISearchBar控件就是要为你完成搜索功能的一个专用控件.它集成了很多你 ...
- MFC编程入门之二十六(常用控件:滚动条控件ScrollBar)
回顾上一节,讲的是组合框控件Combo Box的使用.本节详解滚动条控件Scroll Bar的相关内容. 滚动条控件简介 滚动条大家也很熟悉了,Windows窗口中很多都有滚动条.前面讲的列表框和组合 ...
- VS2010/MFC编程入门之二十六(常用控件:滚动条控件Scroll Bar)
回顾上一节,鸡啄米讲的是组合框控件Combo Box的使用.本节详解滚动条控件Scroll Bar的相关内容. 滚动条控件简介 滚动条大家也很熟悉了,Windows窗口中很多都有滚动条.前面讲的列表框 ...
- 【Android开发日记】之入门篇(十四)——Button控件+自定义Button控件
好久不见,又是一个新的学期开始了,为什么我感觉好惆怅啊!这一周也发生了不少事情,节假日放了三天的假(好久没有这么悠闲过了),实习公司那边被组长半强制性的要求去解决一个后台登陆的问题,结果就是把 ...
随机推荐
- GreenDao关系建表
关系 在greenDAO,实体涉及使用一对一或一对多的关系.例如,如果要模拟一个1:greenDAOñ关系,你将有一个一对一和一对多的关系.但是,请注意,一对一和一对多的关系不是相互连接,所以你必须同 ...
- 移动APP项目优化
团队计划:设计一款给用户提供就医帮助的安卓APP. 项目计划:两个月内团队成员共同开发完成此款APP,此款APP提供预约挂号,名医名院咨询,就医导航等功能. 角色职责:负责交互设计.UI界面设计.1. ...
- 05 技术内幕 T-SQL 查询读书笔记(第四章)
第四章 子查询:在外部查询内嵌套的内部查询(按照期望值的数量分为,标量子查询 scalar subqueries,多值子查询multivalued subqueries)(按照子查询对外部查询的依赖性 ...
- rethinkdb的dataexplorer查询使用
首先安装rethinkdb(只有linux和mac能够安装) $ sudo apt-get install rethinkdb 然后启动: $ rethinkdb 此时8080端口就可以访问本机的数据 ...
- 渗透杂记-2013-07-13 ms10_061_spoolss
[*] Please wait while the Metasploit Pro Console initializes... [*] Starting Metasploit Console... M ...
- onSaveInstanceState的执行时机
当某个activity变得"容易"被系统销毁时,该activity的onSaveInstanceState就会被执行,除非该activity是被用户主动销毁的,例如当用户按BACK ...
- 记SpannableString设多少span时注意事项
public void setSpan(Object what, int start, int end, int flags) { } 这个方法里的第一个参数,也就是一些span的对象,不能重复使用. ...
- Java Web之会话管理一: 使用Cookie进行会话管理
一.Cookie的概念 Cookie(会话)可以简单的理解为:用户开一个浏览器,点击多个链接,访问服务器多个web资源,然后关闭浏览器,整个过程称为一个会话. 二.会话过程中解决的问题 用户在使用浏览 ...
- asp.net开发中遇到的奇葩bug及解决办法(会持续更新。。。)
1,不知道你们遇没遇到过,在vs2010或更高版本上运行程序的时候,完全没问题,放在IIS中出现了问题,就比如左侧是菜单项,点击菜单右边显示,如果菜单链接是这样:content.aspx,而另一个链接 ...
- hdu 5676 ztr loves lucky numbers
题目链接:hdu 5676 一开始看题还以为和数位dp相关的,后来才发现是搜索题,我手算了下,所有的super lucky number(也就是只含数字4, 7且4, 7的数量相等的数)加起来也不过几 ...