- 浏览: 532571 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
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 855为了给用户比较良好的交付,想在键盘上添加一个按钮,实时根据键盘 ... -
新风作浪博客学习(十八)openURL的使用(iOS调用系统电话、浏览器、地图、邮件等) .
2013-06-08 09:19 989今天遇见一行代码实现打开一个网页,比起印象里的UIWebVie ... -
新风作浪博客学习(十七)UIImageView响应点击事件 .
2013-06-08 09:19 701有时候会遇到点击一张图片,然后让这张图片触发一个事件,或者是跳 ... -
新风作浪博客学习(十六)Navigation + Tab Bar 常用组合框架 .
2013-06-07 08:50 1236看到很多项目中都采用的是Navigation加Tab Bar组 ... -
新风作浪博客学习(十五)google地图定位小Demo .
2013-06-07 08:50 1120[img][/img]今天写的是一个简单功能的google地图 ... -
新风作浪博客学习(十四)怎样向iPhone模拟器中添加图片 .
2013-06-07 08:50 780在我们做项目中可能需要使用图库,模拟器是有图库的,但是如何像其 ... -
新风作浪博客学习(十三)表视图的分组分区和索引分区 .
2013-06-07 08:50 784本次实现的是表视图的分区和索引,代码和前面都差不多,主要还是代 ... -
新风作浪博客学习(十二)代码实现UITableViewCell表视图单元定制 .
2013-06-07 08:49 986通常情况下我们会希望单元格UITableViewCell显示自 ... -
新风作浪博客学习(十一)UITableViewCell的标记、移动、删除、插入 .
2013-06-06 09:15 1099这篇文章是建立在 代码实现 UITableView与UITa ... -
新风作浪博客学习(十)代码实现 UITableView与UITableViewCell .
2013-06-06 09:14 1151我们常用的表格类视图就是用 UITableView与UITab ... -
新风作浪博客学习(九)两个UIPickerView控件间的数据依赖 .
2013-06-06 09:14 1069本篇实现功能是两个选取器的关联操作,滚动第一个滚轮第二个滚 ... -
新风作浪博客学习(八)代码实现UIPickerView .
2013-06-06 09:14 1278先说一下当个组件选取器,我们创建一个数组NSAray来保存选取 ... -
新风作浪博客学习(六)ios 视图切换翻页效果 .
2013-06-05 11:18 1058本文写的是视图切换,涉及到的内容有 1.实现代码添加Navi ... -
新风作浪博客学习(五)代码实现UISlider 和 UISwitch .
2013-02-18 09:15 1134本次实现的UISlider和UISwi ... -
新风作浪博客学习(四)把plist里数据显示在textField上 .
2013-02-18 09:15 914在代码实现Lable 、textFie ... -
新风作浪博客学习(三)NSBundle读取图片 plist文件和txt文件
2013-02-18 09:15 1715本文想简单介绍一下NSBundle读取图片到视图上,读取pli ... -
新风作浪博客学习(二)代码实现Lable 、textField创建界面以及键盘的处理
2013-02-18 09:15 1172今天写的是用代码实现一个简单界面,代码重复率比较高,可读性不是 ... -
新风作浪博客学习(一)plist文件读写操作
2013-02-18 09:14 1357文件plist 全名Property List,属性列表文件, ... -
GCDiscreetNotificationView提示视图
2013-06-05 11:17 557先看一下效果图: [img] ... -
iphone开发之适配iphone5
2013-06-05 11:15 1088iphone5出来了,从不用适配的我们也要像android一样 ...
相关推荐
在iOS开发中,宏定义是Objective-C编程中一个非常实用的工具,它们可以用来简化代码、提高效率并增强代码的可读性。标题中的“iOS开发中那些高效常用的宏”指的是开发者在iOS应用开发过程中经常使用的宏定义,这些宏...
### 基于Springboot的新风图书馆管理系统的设计与实现 #### 1.1 系统的开发背景及意义 在当今社会,随着信息技术的快速发展,图书馆的传统管理模式面临着诸多挑战。传统的人工管理方式效率低下,难以满足现代图书...
本资料"电子政务-具有电源自动切换电路的新风控制器.zip"聚焦于一种特殊的技术解决方案,即新风控制器,它内置了电源自动切换电路,这对于提升公共建筑或办公环境的能源管理和环境质量具有重要意义。 新风控制器是...
新风系统是一种用于室内空气质量改善的设备,它主要由风机、进风口、排风口和相关管道及接头组成。在不开启窗户的情况下,新风系统能够持续不断地将室外的新鲜空气引入室内,同时将室内的污浊空气排出,实现室内空气...
本PPT学习教案着重讲解了新风系统设计的相关知识,包括新风量的确定、新风负荷的计算以及新风设备的选择和布置。 新风量的确定是新风系统设计的基础,它基于三个主要因素:卫生要求、补充局部排风量和保持空调房间...
基于PLC的洁净手术室净化空调新风机组自动控制设计与实现方法主要关注于提高手术室空气质量,降低术后感染风险,确保患者在适宜的温度和湿度中更快恢复健康。该控制系统以可编程逻辑控制器(PLC)为核心,结合工控机...
"基于PLC和APP的新风机组远程监控系统设计与应用" 本文研究了基于可编程逻辑控制器(PLC)和智能手机应用程序(APP)的新风机组远程集中监控系统的设计与应用。该系统旨在解决传统建筑的新风机组控制问题,实现智能...
专业新风系统资料PPT学习教案.pptx
这些组件之间通过电气连接和机械连接实现协调工作,从而实现新风机控制系统的自动化控制。 实训1:认知DDC新风机控制系统模块的组成 * 实训目的:认知DDC新风机控制系统模块的组成和功能。 * 实训步骤: 1. 在...
新风系统设计是建筑环境工程中的重要组成部分,其主要目的是为室内环境提供清新、健康的空气,同时保持室内气候的适宜性。以下是对新风系统设计关键知识点的详细解析: 1. **新风定义**:新风指的是从室外引入的...
新风机组的控制方案主要涉及三个关键方面:温度控制、湿度控制和设备保护。下面将分别详细介绍这三种控制方案。 一、新风机组温度控制方案 该方案利用比例积分(PI)温度控制器、温度传感器和电动调节阀实现精确的...
【组态王地下人防工程新风控制程序模拟】是一个基于“组态王”软件的项目,用于模拟和控制地下人防工程中的新风系统。人防工程,即人民防空工程,是为应对战争或其他紧急情况而建造的地下设施,其目的是保护人员的...
从提供的文件信息中,我们仅能看到【标题】和【部分内容】,由于【描述】和【标签】为空,无法从中提取更多知识点。然而,根据给出的【标题】和【部分内容】,我们可以看出这是一个与“新风合同”相关的文件内容。该...
新风系统设计是确保室内空气质量的关键,涉及到人体健康、能源效率和环境舒适度等多个方面。在新风系统设计中,首要任务是理解通风的基本概念及其目的。通风是通过自然或机械方式实现室内与室外空气的交换,以满足...
新风图书馆管理系统是一款基于Springboot框架构建的在线图书管理应用,旨在提高图书管理效率和用户借阅体验。系统设计遵循现代化的技术趋势,采用B/S(Browser/Server)架构,即浏览器/服务器模式,使得用户无需安装...
机房新风系统一般通过以下几种方式来实现其功能:自适应调节和热交换节能。它们利用优化逻辑控制技术实时监测室内外环境温湿度的实时变化,以及根据机房空间的分布情况,智能计算出最适宜的通风换气策略。 机房新风...
新风系统,作为一种提高室内空气质量的有效手段,近年来在建筑领域得到了广泛应用。2019年的行业概览报告,结合了2020年的精品研究,为读者提供了全面深入的洞察,揭示了新风系统行业的最新趋势、市场规模、技术发展...