一、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控件的使用的更多相关文章

  1. ios基础篇(十二)——UINavgationController的使用(三)ToolBar

    UIToolBar存在于UINavigationController导航栏控制器中,而且默认被隐藏:设置UINavigationController的toolbarHidden属性可显示UIToolB ...

  2. ios基础篇(十四)——UITableView(二)属性及基本用法

    上一篇说了UITableView的重用机制,让我们对UITableView有了简单了解,下面说说UITableView的属性及常见方法. 一.属性 1.frame:设置控件的尺寸和大小 2.backg ...

  3. Spring+SpringMVC+MyBatis+easyUI整合基础篇(十二)阶段总结

    不知不觉,已经到了基础篇的收尾阶段了,看着前面的十几篇文章,真的有点不敢相信,自己竟然真的坚持了下来,虽然过程中也有过懒散和焦虑,不过结果还是自己所希望的,克服了很多的问题,将自己的作品展现出来,也发 ...

  4. ioS基础篇(十九)——UIResponder简析

    UIResponder类定义了对象相应和控制事件的接口,他是UIApplication.UIView的超类,这类的实例通常被称为应答对象. 一.Responder对象 在iOS系统中,能够响应并处理事 ...

  5. ios基础篇(十六)——UIWebView的基本使用

    UIWebView是内置的浏览器控件,可以用它来浏览网页.打开文档等.UIWebView是一个混合体,具体的功能控件内置的,实现一些基本的功能.UIWebView可以查看Html网页,pdf文件,do ...

  6. iOS基础篇(十五)——UIScrollView的基本用法

    滚动视图(UIScrollView)通常用于显示内容尺寸大于屏幕尺寸的视图. 一.基本属性 1.CGSize contentSize :设置UIScrollView的滚动范围 2.CGPoint co ...

  7. iOS开发——UI进阶篇(十九)UISearchBar控件简介

    最近用到搜索功能.总结一下 搜索,无疑可以使用UISearchBar控件! 那就先了解一下UISearchBar控件吧! UISearchBar控件就是要为你完成搜索功能的一个专用控件.它集成了很多你 ...

  8. MFC编程入门之二十六(常用控件:滚动条控件ScrollBar)

    回顾上一节,讲的是组合框控件Combo Box的使用.本节详解滚动条控件Scroll Bar的相关内容. 滚动条控件简介 滚动条大家也很熟悉了,Windows窗口中很多都有滚动条.前面讲的列表框和组合 ...

  9. VS2010/MFC编程入门之二十六(常用控件:滚动条控件Scroll Bar)

    回顾上一节,鸡啄米讲的是组合框控件Combo Box的使用.本节详解滚动条控件Scroll Bar的相关内容. 滚动条控件简介 滚动条大家也很熟悉了,Windows窗口中很多都有滚动条.前面讲的列表框 ...

  10. 【Android开发日记】之入门篇(十四)——Button控件+自定义Button控件

        好久不见,又是一个新的学期开始了,为什么我感觉好惆怅啊!这一周也发生了不少事情,节假日放了三天的假(好久没有这么悠闲过了),实习公司那边被组长半强制性的要求去解决一个后台登陆的问题,结果就是把 ...

随机推荐

  1. $().each 和表单事件的坑

    在用each循环时 1.想结束循环 return false 2.想跳过某循环 return 3.想跳出function 不行,请切换成其他循环如 for 使用form表单事件 1.必须要有submi ...

  2. Java基础应用

    Java集合类解析 List.Map.Set三个接口,存取元素时,各有什么特点? List 以特定次序来持有元素,可有重复元素.Set 无法拥有重复元素,内部排序.Map 保存key-value值,v ...

  3. zigbee学习之路(十五):基于协议栈的按键实验

    一.前言 经过上次的学习,相信大家已经初步学会使用zigbee协议进行发送和接受数据了.今天,我们要进行的实验是按键的实验,学会如何在协议栈里实现按键中断. 二.实验功能 在协议栈上实现按键中断,BU ...

  4. Mac > MacBook Pro的移动硬盘方案

    灵感来自:http://cone.cc/2012/12/30/Macbook-Air-HD/ 主要为了解决:如果让移动硬盘,无缝地,安全地,同时应用在苹果电脑系统和微软的系统. 除了储存文件,我还想用 ...

  5. JAVA中取余(%)规则和介绍

    在java中%的含义为取余. java :a%b 数学公式a%b=a-(a/b)*b

  6. win7垃圾路径

    @echo off echo 正在清除系统垃圾文件,请稍等...... del /f /s /q %systemdrive%\*.tmp del /f /s /q %systemdrive%\*._m ...

  7. CVE-2016-4758: UXSS in Safari's showModalDialog

    I would like to share about details of Safari's UXSS bug(CVE-2016-4758). This bug was fixed in Safar ...

  8. Java一个汉字占几个字节(详解与原理)

    1.先说重点: 不同的编码格式占字节数是不同的,UTF-8编码下一个中文所占字节也是不确定的,可能是2个.3个.4个字节: 2.以下是源码: @Test public void test1() thr ...

  9. Zend Studio 11.0 汉化

    1.Help->Install New Software2.在Work with框中复制此地址:http://download.eclipse.org/technology/babel/upda ...

  10. 把数据输出到Word (组件形式)

    上一篇的文章中我们介绍了在不使用第三方组件的方式,多种数据输出出到 word的方式,最后我们也提到了不使用组件的弊端,就是复杂的word我们要提前设置模板.编码不易控制.循环输出数据更是难以控制.接下 ...