- 浏览: 516370 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
tangyunliang:
大哥你太历害了谢谢
Android基于XMPP Smack Openfire开发IM【四】初步实现两个客户端通信 -
u013015029:
LZ,请问下,在// 添加消息到聊天窗口 , 这里获取Ed ...
Android基于XMPP Smack Openfire开发IM【四】初步实现两个客户端通信 -
endual:
怎么保持会话,我搞不懂啊
Android基于XMPP Smack Openfire开发IM【一】登录openfire服务器 -
donala_zq:
显示:[2013-11-30 11:50:36 - Andro ...
android-----------新浪微博 -
donala_zq:
哥,运行不了啊
android-----------新浪微博
感觉代码写控件都一个理,先在ViewDidLoad中创建控件对象,然后初始化他的frame,在简单的描叙下他们的相关属性,最后在添加到视图上;这样控件就在视图上显示出来了;
UIDatePicker是一个用来选择日期或设置日期的控件,他不是UIPickerView子类,而是UIControl的子类,当然它所依赖的类也是与实践有关的类,NSDate;苹果公司已经为你实现好了这个控件是怎么实现的,它底层怎么实现你不必了解,你只需调用相关API就可以了;
上一文中写了Navigation Bar 和ToolBar的视图切换,这一节把Tab Bar视图切换也加上,切换两个不同格式下的日历表,还是先把效果图奉上吧(界面不咋好看):
前面两个tab Bar item图标是系统的图标,后面一个是添加了一张背景图片,但是不知道问什么没有显示,切换界面的两个按钮还是前面两个Tab Bar Item;
[img]
[/img],[img]
[/img]
1.创建一个新工程叫DatePickerDemo; File->New->Project ->single View Application -> next
[img]
[/img]
2.然后在新建两个ViewController分别叫FirstViewController和SecondViewController
[img]
[/img]
3.设置UITabBarDelegate协议,在ViewController中,
4.在ViewController.m文件的ViewDidLoad中创建初始化界面
5.设置日历控件的响应事件
这里涉及到了一个NSDate向NSString的转换问题
NSString向NSDate如何转换
6.UITabBarDelegate的委托方法
在方法中我们看到有Item.tag是在ViewDidLoad给Tab Bar Item设定的tag,相当于给这个按钮编了一个号码,这个号码代表这个按钮;再点击不同按钮的时候切换不同视图,这个方法和上一博客所用的视图切换方法思想一样,只是没有添加动画效果,首先判断第一个视图父视图是否为空,在判断在试图是否为空,为空则创新创建一个,初始化并把管理权交给该视图控制器,移去原来的视图,把现在视图切换过去;
在方法中我把第一个给注释了,第一个是插入主视图后面,出现的情况就是主视图上的DatePicker把插入给覆盖了,显示不出来,第二种是之间把切换的视图放在主视图上面,但是这个问题出来了,他把主视图下面的Tab Bar给覆盖了,于是我把需要切换的视图的frame高度设置成了460-44高度,在FirstViewController的ViewDidLoad方法中
在item.tag=2中,并未这样做,只是想做一下对比,在我们前面看见的这个界面的截图并没有完全显示SecondViewController视图上的内容,他被ViewController上的视图覆盖了,在SeconViewController上的ViewDidLoad初始化是这样的
[datePickersetDatePickerMode:UIDatePickerModeDateAndTime];设置日历显示模式,有四种模式
typedefenum {
UIDatePickerModeDateAndTime,
UIDatePickerModeTime,
UIDatePickerModeDate,
UIDatePickerModeCountDownTimer
} UIDatePickerMode;
[img]
[/img] [img]
[/img] [img]
[/img] [img]
[/img]
UIDatePicker是一个用来选择日期或设置日期的控件,他不是UIPickerView子类,而是UIControl的子类,当然它所依赖的类也是与实践有关的类,NSDate;苹果公司已经为你实现好了这个控件是怎么实现的,它底层怎么实现你不必了解,你只需调用相关API就可以了;
上一文中写了Navigation Bar 和ToolBar的视图切换,这一节把Tab Bar视图切换也加上,切换两个不同格式下的日历表,还是先把效果图奉上吧(界面不咋好看):
前面两个tab Bar item图标是系统的图标,后面一个是添加了一张背景图片,但是不知道问什么没有显示,切换界面的两个按钮还是前面两个Tab Bar Item;
[img]
[/img],[img]
[/img]
1.创建一个新工程叫DatePickerDemo; File->New->Project ->single View Application -> next
[img]
[/img]
2.然后在新建两个ViewController分别叫FirstViewController和SecondViewController
[img]
[/img]
3.设置UITabBarDelegate协议,在ViewController中,
#import <UIKit/UIKit.h> #import "FirstViewController.h" #import "SecondViewController.h" @interface ViewController : UIViewController<UITabBarDelegate> { UIDatePicker *datePicker; UITabBar *tabBar; FirstViewController *firstViewController; SecondViewController *secondViewCOntroller; } @end
4.在ViewController.m文件的ViewDidLoad中创建初始化界面
- (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. // 初始化Tab Bar tabBar = [[UITabBar alloc] initWithFrame:CGRectMake(0, 416, 320, 44)]; //设置Tab Bar上的交互属性为YES [tabBar setUserInteractionEnabled:YES]; // 设置代理 [tabBar setDelegate:self]; // 设置TabBar的背景颜色 [tabBar setBackgroundColor:[UIColor purpleColor]]; // 设置tabBar的透明度 tabBar.alpha = 0.5f; // 定义一个可变数组存放tab Bar Item NSMutableArray *tabBarArray= [NSMutableArray array]; // 初始化一个Tab Bar Item 到数组中 [tabBarArray addObject:[[UITabBarItem alloc]initWithTabBarSystemItem:UITabBarSystemItemFavorites tag:1]]; [tabBarArray addObject:[[UITabBarItem alloc]initWithTabBarSystemItem:UITabBarSystemItemHistory tag:2]]; UIImage *image = [UIImage imageNamed:@"test48.png"]; [tabBarArray addObject:[[UITabBarItem alloc]initWithTitle:@"测试" image:image tag:3]]; // 给Tab Bar 添加数组里的tab Bar Item [tabBar setItems:tabBarArray animated:NO]; [self.view addSubview:tabBar]; // datePicker宽度320像素和高度216像素,系统都设置好了,只需设置一下他的远点坐标, datePicker = [[UIDatePicker alloc] initWithFrame:CGRectMake(0, 0, 0, 0)]; // 设置datePicker显示模式 [datePicker setDatePickerMode:UIDatePickerModeDateAndTime]; //DatePicker属于UIControl子类,可以触发事件,当滚动滑轮滑轮停下后就调用这个方法了 [datePicker addTarget:self action:@selector(dateChanged:) forControlEvents:UIControlEventValueChanged]; [self.view addSubview:datePicker]; }
5.设置日历控件的响应事件
-(void)dateChanged:(id)sender { UIDatePicker *control = (UIDatePicker*)sender; // 把当前控件设置的时间赋给date NSDate *date = control.date; // 将NSDate格式装换成NSString类型 NSDateFormatter *dateFormatter = [[NSDateFormatter alloc]init]; // 设置日历显示格式 [dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"]; // 把日历时间传给字符串 NSString *strDate = [dateFormatter stringFromDate:date]; NSString *message = [[NSString alloc]initWithFormat:@"你选取的时间是:%@",strDate]; // 弹出一个警告 UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"温馨提示" message:message delegate:self cancelButtonTitle:@"OK" otherButtonTitles: nil]; // 显示警告 [alert show]; }
这里涉及到了一个NSDate向NSString的转换问题
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; [dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"]; NSString *strDate = [dateFormatter stringFromDate:[NSDate date]]; NSLog(@"%@", strDate);
NSString向NSDate如何转换
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; [dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"]; NSDate *date = [dateFormatter dateFromString:@"2012-07-04 9:03:03"]; NSLog(@"%@", date)
6.UITabBarDelegate的委托方法
-(void)tabBar:(UITabBar *)tabBarBar didSelectItem:(UITabBarItem *)item { if (item.tag == 1) { // [tabBar setSelectedItem:[tabBar.items objectAtIndex:0]]; NSLog(@"---->%d",item.tag); if(firstViewController.view.superview==nil) { if (firstViewController.view==nil) { FirstViewController *firstView = [[FirstViewController alloc]initWithNibName:@"FirstViewController" bundle:nil]; firstViewController=firstView; } [secondViewCOntroller.view removeFromSuperview]; // [self.view insertSubview:firstViewController.view atIndex:0]; [self.view addSubview:firstViewController.view]; } else { [secondViewCOntroller.view removeFromSuperview]; // [self.view insertSubview:firstViewController.view atIndex:0]; [self.view addSubview:firstViewController.view]; } } if (item.tag == 2) { if (secondViewCOntroller.view.superview==nil) { if (secondViewCOntroller.view == nil) { SecondViewController *secondView = [[SecondViewController alloc] initWithNibName:@"SecondViewController" bundle:nil]; secondViewCOntroller=secondView; } [firstViewController.view removeFromSuperview]; [self.view insertSubview:secondViewCOntroller.view atIndex:0]; } else { [firstViewController.view removeFromSuperview]; [self.view insertSubview:secondViewCOntroller.view atIndex:0]; } } NSLog(@"---->%d",item.tag); }
在方法中我们看到有Item.tag是在ViewDidLoad给Tab Bar Item设定的tag,相当于给这个按钮编了一个号码,这个号码代表这个按钮;再点击不同按钮的时候切换不同视图,这个方法和上一博客所用的视图切换方法思想一样,只是没有添加动画效果,首先判断第一个视图父视图是否为空,在判断在试图是否为空,为空则创新创建一个,初始化并把管理权交给该视图控制器,移去原来的视图,把现在视图切换过去;
[self.view insertSubview:firstViewController.view atIndex:0]; [self.view addSubview:firstViewController.view];
在方法中我把第一个给注释了,第一个是插入主视图后面,出现的情况就是主视图上的DatePicker把插入给覆盖了,显示不出来,第二种是之间把切换的视图放在主视图上面,但是这个问题出来了,他把主视图下面的Tab Bar给覆盖了,于是我把需要切换的视图的frame高度设置成了460-44高度,在FirstViewController的ViewDidLoad方法中
- (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view from its nib. self.view.frame = CGRectMake(0, 0, 320, 416); self.view.backgroundColor = [UIColor blueColor]; UIDatePicker *datePicker = [[UIDatePicker alloc] initWithFrame:CGRectMake(0, 0, 0, 0)]; // 设置datePicker显示模式 [datePicker setDatePickerMode:UIDatePickerModeTime]; [self.view addSubview:datePicker]; }
在item.tag=2中,并未这样做,只是想做一下对比,在我们前面看见的这个界面的截图并没有完全显示SecondViewController视图上的内容,他被ViewController上的视图覆盖了,在SeconViewController上的ViewDidLoad初始化是这样的
- (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view from its nib. self.view.backgroundColor = [UIColor greenColor]; UIDatePicker *datePicker = [[UIDatePicker alloc] initWithFrame:CGRectMake(0, 0, 0, 0)]; // 设置datePicker显示模式 [datePicker setDatePickerMode:UIDatePickerModeDate]; [self.view addSubview:datePicker]; }
[datePickersetDatePickerMode:UIDatePickerModeDateAndTime];设置日历显示模式,有四种模式
typedefenum {
UIDatePickerModeDateAndTime,
UIDatePickerModeTime,
UIDatePickerModeDate,
UIDatePickerModeCountDownTimer
} UIDatePickerMode;
[img]
[/img] [img]
[/img] [img]
[/img] [img]
[/img]
- DatePickerDemo.zip (77.4 KB)
- 下载次数: 2
发表评论
-
新风作浪博客学习(十九)在iOS虚拟键盘上添加动态隐藏按钮
2013-06-08 09:19 815为了给用户比较良好的交付,想在键盘上添加一个按钮,实时根据键盘 ... -
新风作浪博客学习(十八)openURL的使用(iOS调用系统电话、浏览器、地图、邮件等) .
2013-06-08 09:19 932今天遇见一行代码实现打开一个网页,比起印象里的UIWebVie ... -
新风作浪博客学习(十七)UIImageView响应点击事件 .
2013-06-08 09:19 666有时候会遇到点击一张图片,然后让这张图片触发一个事件,或者是跳 ... -
新风作浪博客学习(十六)Navigation + Tab Bar 常用组合框架 .
2013-06-07 08:50 1194看到很多项目中都采用的是Navigation加Tab Bar组 ... -
新风作浪博客学习(十五)google地图定位小Demo .
2013-06-07 08:50 1058[img][/img]今天写的是一个简单功能的google地图 ... -
新风作浪博客学习(十四)怎样向iPhone模拟器中添加图片 .
2013-06-07 08:50 741在我们做项目中可能需要使用图库,模拟器是有图库的,但是如何像其 ... -
新风作浪博客学习(十三)表视图的分组分区和索引分区 .
2013-06-07 08:50 744本次实现的是表视图的分区和索引,代码和前面都差不多,主要还是代 ... -
新风作浪博客学习(十二)代码实现UITableViewCell表视图单元定制 .
2013-06-07 08:49 932通常情况下我们会希望单元格UITableViewCell显示自 ... -
新风作浪博客学习(十一)UITableViewCell的标记、移动、删除、插入 .
2013-06-06 09:15 1059这篇文章是建立在 代码实现 UITableView与UITa ... -
新风作浪博客学习(十)代码实现 UITableView与UITableViewCell .
2013-06-06 09:14 1113我们常用的表格类视图就是用 UITableView与UITab ... -
新风作浪博客学习(九)两个UIPickerView控件间的数据依赖 .
2013-06-06 09:14 1039本篇实现功能是两个选取器的关联操作,滚动第一个滚轮第二个滚 ... -
新风作浪博客学习(八)代码实现UIPickerView .
2013-06-06 09:14 1240先说一下当个组件选取器,我们创建一个数组NSAray来保存选取 ... -
新风作浪博客学习(六)ios 视图切换翻页效果 .
2013-06-05 11:18 1024本文写的是视图切换,涉及到的内容有 1.实现代码添加Navi ... -
新风作浪博客学习(五)代码实现UISlider 和 UISwitch .
2013-02-18 09:15 1074本次实现的UISlider和UISwi ... -
新风作浪博客学习(四)把plist里数据显示在textField上 .
2013-02-18 09:15 885在代码实现Lable 、textFie ... -
新风作浪博客学习(三)NSBundle读取图片 plist文件和txt文件
2013-02-18 09:15 1625本文想简单介绍一下NSBundle读取图片到视图上,读取pli ... -
新风作浪博客学习(二)代码实现Lable 、textField创建界面以及键盘的处理
2013-02-18 09:15 1137今天写的是用代码实现一个简单界面,代码重复率比较高,可读性不是 ... -
新风作浪博客学习(一)plist文件读写操作
2013-02-18 09:14 1299文件plist 全名Property List,属性列表文件, ... -
GCDiscreetNotificationView提示视图
2013-06-05 11:17 525先看一下效果图: [img] ... -
iphone开发之适配iphone5
2013-06-05 11:15 1010iphone5出来了,从不用适配的我们也要像android一样 ...
相关推荐
iO2开l中那些高效常用的宏新风作浪的博客T栏新风作浪的博客T栏懂得y|O表现yxP才iy|O锋芒yxO很浅薄O一眼就能被看穿. 沉R来O打根tO让d人S会觉得
基于Springboot的新风图书馆管理系统的设计与实现.docx基于Springboot的新风图书馆管理系统的设计与实现.docx基于Springboot的新风图书馆管理系统的设计与实现.docx基于Springboot的新风图书馆管理系统的设计与实现....
基于Springboot的新风图书馆管理系统的设计与实现.pdf基于Springboot的新风图书馆管理系统的设计与实现.pdf基于Springboot的新风图书馆管理系统的设计与实现.pdf基于Springboot的新风图书馆管理系统的设计与实现.pdf...
新风系统设计PPT学习教案.pptx
新风系统简介PPT学习教案.pptx
专业新风系统资料PPT学习教案.pptx
新风合同.pdf
新风系统设计重点PPT学习教案.pptx
新风系统的设计PPT学习教案.pptx
新风机组三种控制方案.doc
学习讲正气树新风心得.doc
电子政务-具有电源自动切换电路的新风控制器.zip
2019年新风系统行业概览2020精品报告.rar
讲正气树新风学习小结.doc
机房新风系统介绍.pdf