iOS开发--日期选择

展示效果 : (UIDatePicker & UIToolBar & UITextField 共同配合使用)

请问 : 实现的步骤是什么 ?

第一步,在程序视图加载完成之后,首先来创建一个 "日期选择器" 并将 "日期选择器" 设置为文本框的 "输入视图". 完成后再创建一个 "工具栏", 设置背景颜色及frame. 最后将 "工具栏" 设置为文本框的辅助输入视图. 特别注意 : 如果要将一个 "工具栏" 设置为文本框的辅助输入视图,那么frame中的x | y | width 无效.只有height才能自定义设置.

第二步,在 "工具条" 中创建 "取消" & "弹簧" & "完成" 按钮, 注意 : 工具条中的所有内容都必须是UIBarButtonItem类型的控件. 创建完成后将上面创建的UIBarButtonItem添加到 "工具栏" 中.

第三步,点击取消按钮,只需要将退出键盘即可. 点击完成按钮需要做如下几件事情.

l  1> 获取用户选择的日期. 由于日期控件是我们之前在视图加载完成之后纯代码创建的一个局部变量, 因此不能使用IBOutlet进行连线. 所以我们需要在类扩展中定义一个UIDatePicker类型的全局属性进行记录. 注意 : 我们需要使用日期格式类将日期对象转换为字符串对象进行显示.

l  2> 把转换完成的字符串设置给文本框.

l  3>把键盘叫回去.

第四步,如何将日期选择器的内容自动设置到文本输入框中 ? 由于UIDatePicker是继承自UIControl. 因此UIDatePicker可以使用addTarget方法进行值改变事件的注册.

// 本地化的设置

// 第一步代码实现

------------------------------ ViewController.m ------------------------------

@interface ViewController ()

/** 文本输入框 */

@property (weak, nonatomic) IBOutlet UITextField *textField;

@end

@implementation ViewController

- (void)viewDidLoad {

[super viewDidLoad];

// 1. 创建一个datePicker

UIDatePicker *datePicker = [[UIDatePicker alloc] init];

// 1.2 修改显示语言

datePicker.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"zh-Hans"];

// 1.3 修改显示模式

datePicker.datePickerMode = UIDatePickerModeDate;

// 2. 设置文本框弹出datePicker键盘

self.textField.inputView = datePicker;

// 3. 创建一个工具栏

UIToolbar *toolBar = [[UIToolbar alloc] init];

// 3.2 设置工具条的背景颜色

toolBar.barTintColor = [UIColor purpleColor];

// 3.3 设置工具条的frame

toolBar.frame = CGRectMake(0, 0, 0, 44);

// 4. 设置工具栏显示到键盘的上方

self.textField.inputAccessoryView = toolBar;

}

@end

// 第二步代码实现

------------------------------ ViewController.m ------------------------------

// 4. 创建工具栏中的按钮

// 4.1 "取消" 按钮

UIBarButtonItem *itemCancel = [[UIBarButtonItem alloc] initWithTitle:@"取消" style:UIBarButtonItemStylePlain target:self action:@selector(didClickCancelButton)];

// 4.2 "弹簧" 按钮

UIBarButtonItem *itemSpring = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil];

// 4.3 "完成" 按钮

UIBarButtonItem *itemDone = [[UIBarButtonItem alloc] initWithTitle:@"完成" style:UIBarButtonItemStyleDone target:self action:@selector(didClickDoneButton)];

// 4.4 将上面创建的UIBarButtonItem添加到 "工具栏" 中

toolBar.items = @[itemCancel, itemSpring, itemDone];

// 第三步代码实现

------------------------------ ViewController.m ------------------------------

/** 用来记录创建 "日期选择器" */

@property (nonatomic, weak) UIDatePicker *datePicker;

// 1.4 记录日期选择器

self.datePicker = datePicker;

#pragma mark - item点击事件处理

// 点击了 "取消" 按钮

- (void)didClickCancelButton

{

// 退出键盘

[self.view endEditing:YES];

}

// 点击了 "完成" 按钮

- (void)didClickDoneButton

{

// 1. 获取用户选择的日期

NSDate *date = self.datePicker.date;

// 1.2 使用NSDateFormatter将一个NSDate对象转换为NSString对象

NSDateFormatter *formatter = [[NSDateFormatter alloc] init];

// 1.3 设置将来要的字符串格式

formatter.dateFormat = @"yyyy-MM-dd";

// 1.4 开始转换

NSString *strDate = [formatter stringFromDate:date];

// 2. 将日期设置给文本输入框

self.textField.text = strDate;

// 3. 退出键盘

[self.view endEditing:YES];

}

// 第四步代码实现

------------------------------ ViewController.m ------------------------------

// 1.5 为datePicker注册一个 "值改变" 改变事件

[datePicker addTarget:self action:@selector(dateChanged:) forControlEvents:UIControlEventValueChanged];

#pragma mark - 日期选择器的点击事件

- (void)dateChanged:(UIDatePicker *)datePicker

{

// 1. 使用日期格式化将日期转换成字符串

NSDateFormatter *formatter = [[NSDateFormatter alloc] init];

formatter.dateFormat = @"yyyy-MM-dd HH:mm:ss";

NSString *str = [formatter stringFromDate:datePicker.date];

NSLog(@"日期 : %@",str);

}

时间: 2024-11-09 05:46:11

iOS开发--日期选择的相关文章

iOS开发-照片选择

本来想做个注册登录的表单的,想想还是先做个简单的头像选择,一般情况下不管是内部管理系统还是面向公众的互联网公司,注册登录是免不了的,用户头像上传是免不了的,尤其是企业用户,上传了自己的图片才感觉自己买的系统是比较值的.iOS开发中上传图片还是比较简单的,通过UIImagePickerController和协议就很容易的实现的图片的选择和上传. 页面布局 首先看下视图,一个按钮,一个标签和一个ImageView: 界面很简单,头文件中声明一下UIImageView: @property (weak

ios开发-日期处理(类似朋友圈,微博等的发送时间)

ios开发中,我们经常要处理从服务器获取的时间.类似朋友圈,微博这些应用.我们经常可以看到“刚刚”,“31分钟前发表”,“昨天5点”,之类的字样. 当时我们从服务器端获取的都是那条朋友圈信息,或者微博的创建时间.所以我们每次显示数据的时候,都需要根据跟当前的时间做对比,按照格式,算出 我们想要的结果. 例如,我们从服务器获取的时间,大概都类似于  Sun May 24 12:12:00 +0800 2015 我们还是先详细说明一下日期格式吧 年 y 将年份 (0-9) 显示为不带前导零的数字 y

iOS 开发图片资源选择png格式还是jpg格式

对于iOS本地应用程序来说最简单的答案就是始终使用PNG,除非你有非常非常好的理由不用它. 当iOS应用构建的时候,Xcode会通过一种方式优化.png文件而不会优化其它文件格式.它优化得相当的好 他们之间有以下区别: 1.同个分辨率的图片,保存为png要比jpg大: 2.png图片有alpha通道,因此它支持图片透明,这点在ios开发中尤为重要:而jpg不支持透明 3.xcode会对png格式进行特殊的优化处理,而对于其他图片不做处理 总结一下有以下几点: 1.如果你的图片都是xcode本地就

iOS开发-数据选择UIPickerView

UIPickerView开发一般选择区域或者分级数据的时候会使用到,类似于前端中用到树状结构,不过PC上一般都是从上到下的分级,使用UIPickView是从左到右实现,可以动态的设置UIPickView中中行列数据,将结果显示在文本输入框里,简单的定义一下数据源.通过声明协议捕获事件,展示结果,比较简单,进入正题. 页面布局 页面布局比较简单,一个UIPickerView,一个文本框: 头文件中的声明,实现了UIPickerViewDelegate,UIPickerViewDataSource协

ios开发-教程选择

旧项目为oc项目 入门选择书籍 he.iOS.Apprentice 图文教程 只能看 The.iOS.Apprentice.2nd.Edition 之后都是swift介绍了 共五个教程 分张介绍 阅读教程参考了有道翻译... The iOS Apprentice 1 - Getting Started 一个名字为<The Bull's Eye game>的游戏介绍 1.学习了xCode的简单布局 2.Oc工程建立和结构 3.Main.storyboard中如何添加Button,Label,和绑

IOS开发日期的比较

获取当前时间: NSDate *  senddate=[NSDate date]; NSDateFormatter  *dateformatter=[[NSDateFormatter alloc] init]; [dateformatter setDateFormat:@"YYYYMMdd"]; NSString *  locationString=[dateformatter stringFromDate:senddate]; NSLog(@"locationString:

用c/c++混合编程方式为ios/android实现一个自绘日期选择控件(一)

本文为原创,如有转载,请注明出处:http://www.cnblogs.com/jackybu 前言 章节: 1.需求描述以及c/c++实现日期和月历的基本操作 2.ios实现自绘日期选择控件 3.android实现自绘日期选择控件 目的: 通过一个相对复杂的自定义自绘控件来分享: 1.ios以及android自定义自绘控件的开发流程 2.objc与c/c++混合编程 3.android ndk的环境配置,android studio ndk的编译模式,swig在android ndk开发中的作

李洪强漫谈iOS开发[C语言-043]-判断较早日期

李洪强漫谈iOS开发[C语言-043]-判断较早日期

iOS开发之格式化日期时间

iOS开发之格式化日期时间 在开发iOS程序时,有时候需要将时间格式调整成自己希望的格式,这个时候我们可以用NSDateFormatter类来处理.例如: //实例化一个NSDateFormatter对象 NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; //设定时间格式,这里可以设置成自己需要的格式 [dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];