UIDatePicker 日期时间选取器(滚轮)

UIDatePicker 日期时间选取器(滚轮),第1张

概述from: http://blog.csdn.net/iukey/article/details/7327164 选取器被用来取代PC上面的下拉菜单,它是一个大大的滚轮,它占用固定的大小 320×216. 一、创建 大小虽然固定,但是位置可以任意(不过横向被充满,咱也只能改变纵向位置)。与UItableView 类似,UIpickerView 类也需要一个数据源。与表格视图不同的是,选取器不使用索

from: http://blog.csdn.net/iukey/article/details/7327164


@H_502_12@

选取器被用来取代PC上面的下拉菜单,它是一个大大的滚轮,它占用固定的大小 320×216.

一、创建

大小虽然固定,但是位置可以任意(不过横向被充满,咱也只能改变纵向位置)。与UItableVIEw 类似,UIpickerVIEw 类也需要一个数据源。与表格视图不同的是,选取器不使用索引路径,而是用一个NSinteger 值来标识每一行。选取器可以有多个表盘,每个都可以,作为一个组件引用。

选取器视图使用代理作为数据源,因此数据源可以存在于另一个类或者视图控制器中。

[java]  view plain copy @L_403_2@ ? UIPickerVIEw* pickerVIEw = [ [ UIpickerVIEw alloc] initWithFrame:CGRectmake(0.0,100.0,0); background-color:inherit">0.0)];   pickerVIEw.delegate = self;   pickerVIEw.dataSource =  self;   二、属性

恶心的苹果把许多属性保留为私有的,开放给开发者的少的可怜,可怜到唯一可用的外观选项就是选择窗口。

将选取器的 showsSelectionIndicator 属性设置为YES,可以在当前选择上显示一个透明窗口:

@H_403_75@? pickerVIEw.showsSelectionIndicator = YES;   三、数据源

创建好界面就要考虑数据源了。比必须实现下列数据源委托方法,这些方法是 UIPickerVIEwDataSource 协议的必要方法。

numberOfComponentsInPickerVIEw  

滚轮数量

numberOfRowsInComponent   

为选取器中每个滚轮设置不同数目的行。这个方法返回指定滚轮的行数。

除此之外,UIPickerVIEwDelegate 协议还实现了下列方法,来获取选取器组件特定的信息。

TitleForRow 

 返回对应滚轮(组件)的给定行的实际表盘取值。会以 Nsstring 对象返回这些值。

vIEwForRow

这个方法可以重写选取器显示组件表盘默认行为,令任何 UIVIEw 类都可以在其中显示。

wIDthForComponet

返回给定组件(滚轮)的宽度。如果这方法未实现,选取器会自动调整到合适的宽度。

rowHeightComponent

返回给定组件(滚轮)的高度。如果这个方法未实现,选取器会自动调整到合适的高度。
四、显示

[ self.vIEw addSubvIEw:pickerVIEw ];

五、读取选取器

使用视图的selectedRowInComponent 方法,是获得选取器视图被选中列的索引的最直接的方法:

@H_403_75@? int selectedRow = [ pickerVIEw  selectedRowInComponent:0 ];   也有一个委托方法,当用户选择了选取器中一行时,会收到通知。用这个方法可以向对象发出警报,这样它就可以对新行做出反应: @H_403_75@? - (voID)pickerVIEw:(UIPickerVIEw*)pickerVIEw dIDSelectedRow:(NSInteger)row inComponent:(NSInteger)component{   /*添加代码,根据选中行尽享相应 *** 作*/   }  

@H_502_12@

UIDatePicker 是一个控制器类,封装了 UIPickerVIEw,但是他是UIControl的子类,专门用于接受日期、时间和持续时长的输入。日期选取器的各列会按照指定的风格进行自动配置,这样就让开发者不必关心如何配置表盘这样的底层 *** 作。你也可以对其进行定制,令其使用任何范围的日期。

UIDatePicker 依赖于 NSDate 类,这个类是cocoa 基础的一员,以前用于桌面系统。本文中仅需用到 initWithString 来创建NSDate 所以NSDate 留待专题讲解,你只需要掌握本文中使用的方法就好。

[java]  view plain copy print ? NSDate* _date = [ [ NSDate alloc] initWithString:@"2012-03-07 00:35:00 -0500"];   一、创建日期/时间选取器

UIDatePicker 使用起来比标准 UIPickerVIEw 更简单。他会根据你指定的日期范围创建自己的数据源。使用它只需要创建一个对象:

@H_403_75@? UIDatePicker *datePicker = [ [ UIDatePicker alloc] initWithFrame:CGRectMake(0.0)];   默认情况下选取会显示目前的日期和时间,并提供几个表盘,分别显示可以选择的月份和日期、小时、分钟、以及上午、下午。因此用户默认可以选择任何日期和时间的组合。

二、日期选取器模式

日期/时间选取器支持4种不同模式的选择方式。通过设置 datePickerMode 属性,可以定义选择模式:

@H_403_75@? datePicker.datePickerMode = UIDatePickerModeTime;  

支持的模式:

@H_403_75@? typedef enum {       UIDatePickerModeTime,           // displays hour, minute, and optionally AM/PM designation depending on the locale setting (e.g. 6 | 53 | PM)       UIDatePickerModeDate,0); background-color:inherit">// displays month, day, and year depending on the locale setting (e.g. November | 15 | 2007)       UIDatePickerModeDateAndTime,    // displays date, hour, and optionally AM/PM designation depending on the locale setting (e.g. Wed Nov 15 | 6 | 53 | PM)       UIDatePickerModeCountDownTimer  // displays hour and minute (e.g. 1 | 53)   } UIDatePickerMode;   三、时间间隔

你可以将分钟表盘设置为以不同的时间间隔来显示分钟,前提是该间隔要能够让60整除。默认间隔是一分钟。如果要使用不同的间隔,需要改变 minuteInterval属性:

@H_403_75@? datePicker.minuteInterval = 5;   四、日期范围

你可以通过设置mininumDate 和 maxinumDate 属性,来指定使用的日期范围。如果用户试图滚动到超出这一范围的日期,表盘会回滚到最近的有效日期。两个方法都需要NSDate 对象作参数:

@H_403_75@? NSDate* minDate = [[NSDate alloc]initWithString:@"1900-01-01 00:00:00 -0500"];       NSDate* maxDate = [[NSDate alloc]initWithString:@"2099-01-01 00:00:00 -0500"];              datePicker.minimumDate = minDate;       datePicker.maximumDate = maxDate;   如果两个日期范围属性中任何一个未被设置,则默认行为将会允许用户选择过去或未来的任意日期。这在某些情况下很有用处,比如,当选择生日时,可以是过去的任意日期,但终止与当前日期。如果你希望设置默认显示的日期,可以使用date属性: @H_403_75@? datePicker.date = minDate;   此外,你还可以用 setDate 方法。如果选择了使用动画,则表盘会滚动到你指定的日期: @H_403_75@? [ datePicker setDate:maxDate animated:YES];   五、显示日期选择器

@H_403_75@? [ self.vIEw addSubvIEw:datePicker];   需要注意的是,选取器的高度始终是216像素,要确定分配了足够的空间来容纳。

六、读取日期

@H_403_75@? NSDate* _date = datePicker.date;   由于日期选择器是 UIControl的子类 (与UIPickerVIEw不同),你还可以在UIControl类的通知结构中挂接一个委托: @H_403_75@? [ datePicker addTarget:self action:@selector(dateChanged:) forControlEvents:UIControlEventValueChanged ];   只要用户选择了一个新日期,你的动作类就会被调用: @H_403_75@? -(voID)dateChanged:(ID)sender{             UIDatepicker* control = (UIDatePicker*)sender;   NSDate* _date = control.date;   /*添加你自己响应代码*/   }   是不是觉得很好玩呢?确实。如果觉得好玩,你也试着封装一个UIPickerVIEw 试试看,打造一个你自己的专用滚轮。 总结

以上是内存溢出为你收集整理的UIDatePicker 日期/时间选取器(滚轮)全部内容,希望文章能够帮你解决UIDatePicker 日期/时间选取器(滚轮)所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1059826.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-25
下一篇 2022-05-25

发表评论

登录后才能评论

评论列表(0条)

保存