【UIPickerView-UIDatePicker-应用程序对象 Objective-C语言】

本文介绍了UIPickerView和UIDatePicker的基本概念和用途,以及它们在iOS应用中的使用,如作为数据选择控件、与UITableView的区别,以及如何实现数据源和代理。还通过点餐系统案例演示了如何在项目中应用PickerView和设置其约束。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、今天我们来学习三个东西

1.UIPickerView-UIDatePicker-应用程序对象

通知

1.首先,来看数据选择控件

通知

数据选择控件,

通知

大家对这个数据选择控件,是怎么理解的,

1)数据选择控件,首先,是不是得有数据,

2)然后呢,你还得让用户能够选择,

3)最后,你还得是一个控件儿

那前面学过哪些数据选择控件,有印象吗:

1)是不是UITableView

2)UIClatchView

那两个的话,也是数据选择控件,只不过,我们前面只是做一个数据显示

并没有执行一些选择啊,什么操作,

那么今天呢,我们学习这个UIPickerView,也是一个数据选择控件

它的主要目的,是帮助用户,快速的选择数据

比如说,你选择语言的时候,这个是

1)English:英语

2)然后呢,其他的一些语言,对不对,

这个在哪里呢,在这个模拟器,但是,在iOS8以后,它就不用这个PickerView,去做数据选择了,

用的是那个,TableView

点一下,这个模拟器里面的设置

通知

用的是那个TableView

通知

点一下,设置,隐私,

通知

不是,返回一下,在这个General-通用,里面,

通知

在这个通用里面,有一个Region-Language

通知

然后呢,选择这个

通知

iPhone Language:English

通知

这个是不是我们很熟悉的TableView啊

但是呢,在iOS8以前的话,它是用的是这个UIPickerView

主要呢,就是快速选择控件,

选择这个语言,

然后呢,这两个图片,大家可能比较陌生啊

通知

左边儿这个,是iOS7以后的效果,

扁平化

右边儿这个,是iOS6的效果,

然后呢,是一个模拟金属的那个效果,

然后呢,大家了解一下,就行了,

现在都到9了,这些都已经过时了

然后呢,底下这个UIDatePicker,它呢,是帮助用户选择日期的,

显示一个日期组件儿,方便用户选择,

然后呢,比如说,你想选择哪一年,哪一月,哪一日

是不是都可以直接去选,

快速的去滚动,

去选择

2.然后呢,再看下一张

通知

然后呢,UIPickerView,它呢

使用的话,跟我们那个UITableView,是非常像的,

然后呢,也需要一个

1)UIPickerViewDataSource,数据源协议

2)UIPickerViewDelegate,代理协议

前面的DataSource,和Delegate,是不是很熟悉啊,

TableView里面有,它呢,也有,

然后呢,这里面有一个注意,就是

1)使用这个PickerView,之前,需要指定它这两个协议,

2.还有这个UITextField的inputView,

通知

UITextField,是不是一个文本框,

前面,我们点击这个文本框,会出现什么,是不是会出来一个键盘,

但是,如果你把这个UIPickerView,指定成UITextField的inputView的话,

它就会占据原来键盘的位置,

先有个大致的印象,

通知

后面的话,就是它的使用,

通知

这是随机数,我们后面再说,

3.那接下来,我们就来看一下,今天的Demo

前面,同学们预习了的话,有没有看这个代码,

预习代码,知道在哪儿吧,

然后呢,在第二份儿,其他资料里

通知

是不是有个预习代码

通知

然后呢,打开,

通知

我把这个跑一下,首先呢,我们今天要做的第一个小的案例,就是点餐系统

通知

首先呢,我们今天要做的第一个案例,就是关于这个点餐系统的,

大家有没有试过,用这个PickerView选择数据,

通知

然后呢,当你选择一些水果,主菜,饮料的时候,下边都会跟着显示出来,

选择“随便”,点上面的“随机点餐”,随机出来一个,

接下来呢,咱们就来做一下这个,

我们先,新建一个项目,

通知

新建,

通知

Name:01-点餐

通知

新建

通知

前缀:HM

前面,我们做一些案例的时候,首先,你是干嘛,

是不是先:

1)搭建界面

2)搭建界面,你是不是还得分析一下,首先,咱们来看这个界面

通知

点餐系统,它里面,有哪些组件儿呢,

1)首先,这个顶部,是不是有一个View,

2)然后,里面,放的什么,一个Button,一个Label,对不对,

通知

3)然后呢,中间这一部分,是什么,就是我们今天要学的UIPickerView

4)然后呢,底下,6个Label

通知

左边3个,是不是显示你,选中的什么类别,

右边3个,是不是显示你,选中的什么东西,

好,这是我们这个结构,

然后呢,我们再看一下,如果去设置约束,顶部的这个点餐系统,怎么设置它的约束,

是不是水平居中、垂直居中,就好了,

大小,它会根据字体的文字,去调整,

然后,随机点餐呢,

是垂直居中,然后呢,距离左边,多少,

然后呢,中间这个PickerView,直接,距离顶部为0,两边儿一个约束,

3.然后呢,我们来搭建这个界面,是不是在控制器里面,直接拖,就行了,

通知

我把模拟器放出来,把它保留在最前面,

通知

1)第一步,干嘛,拖控件儿,拖什么,View,吧,

它的背景色呢,我们随便设了一个,

通知

然后呢,它的约束,这个勾去掉,

勾去掉,大家知道什么意思吧,

通知

距离上边是20,左右两边儿呢,都是0,

选择:自动更新frame,点击增加,

通知

额,高度没设,

通知

高度的话,我们设44,了啊,

通知

然后呢,中间一个Label,

然后呢,文字改一下,

通知

“点餐系统”

然后呢,这个约束,是不是垂直、水平、居中

通知

选择更新frame,把垂直、水平、居中的勾选上,

点击增加,

通知

Button,也是一样的,

拖上来,

文字,改成:“随机点餐”,

它的约束呢,垂直居中,

通知

点击增加,

然后呢,距离左边的约束,

通知

把下拉菜单打开,选择View

数值,直接设为20,

选上自动更新frame,点击增加,

通知

清空一下这个按钮的约束,

通知

垂直居中,是吧

通知

距离左边,再来一个,就行了,

距离左边,我设置一个20,然后选择更新frame,点击增加,

通知

好,随机点餐,

通知

4.然后,PickerView的话,在我们下边,提供的有,前面这个,是UIDatePicker

通知

然后,下面这个呢,是UIPickerView

通知

所以呢,我们拖一个进来,

通知

它的高度的话,一个默认的高度,是216,

通知

左边,看一下,216,

通知

然后,我直接设置它的约束了啊,

距离顶部0,

距离左、右两边儿,0,

把这个勾去掉,

通知

距离顶部、距离左边、距离右边、数值都改成0,

通知

然后呢,更新一下frame,点击增加,

通知

然后呢,底部,6个Label,就直接放进去了

然后呢,PickerView的话,这个背景色,也改一下,

通知

蓝色

通知

然后呢,拖一个Label上来,

通知

按住option键,复制出来2个,

然后呢,把这3个选中,复制出来3个,

通知

对吧,

通知

它们的约束,怎们加,先把左上角的Label确定,其他的跟着它走,就行了

先固定一个,再去管其他的,

这个的话,我设置它,距离顶部、距离左边,都为20,

把这个勾去掉,

通知

选择更新frame,

通知

点击增加,

它的是不是就好了,

然后呢,这两个,拖一下,

通知

2)第二个,是不是距离顶部的距离,得设置一下,

通知

我先设置它,距离顶部,20,

通知

点击增加,

然后,左边呢,它们3个对齐,是不是就可以了,

3)第三个呢,也是距离顶部,20,

通知

把这个勾去掉,

通知

点击增加,

4)它们这3个,什么关系,同时选中,是不是添加一个左对齐,就好了,

是不是Leading,是不是这个,

通知

选中自动更新frame,点击增加,

左对齐,就好了,

通知

5)然后呢,这三个呢,先把一个,确定好,

通知

这一个,它是不是跟我们左边这个,是不是顶部对齐,

然后,水平,一个间距,就够了

大小,你能固定吗,

大小,不能吧,我需要到最后,显示字,

通知

我们按住Control键,拖过来,水平的,然后Top的,

通知

这两个勾,勾上,

通知

额,不是,是不是水平一个间距,垂直中心对齐吧,

通知

有问题吗,没有,我就直接加了啊

通知

6)然后呢,这个呢,

通知

它们3个,是不是左对齐,

所以说,我直接按住control键,把这三个选中,

通知

然后呢,把这三个左对齐、加一下,

通知

点击增加,

7)然后呢,第二个、跟第三个、是不是跟左边儿,也是垂直中心对齐,

按住control键,把第二个,拖过来,

通知

选择Center Vertically,点击

8)然后,这个的话,也是Center Vertically

通知

按住Control键,拖过来,

通知

选择Center Vertically

通知

现在,我们这6个Label,设置好了,

然后呢,我把这个文字,也改一下

1)第一个,是什么:水果

2)第二个,是什么:主菜

3)第三个,是什么:酒水

通知

右边这三个,就不要设定了,它是自己去设定内容啊,

把所有的这个约束,再更新一下,

通知

是不是就可以了,

通知

然后呢,我们现在,先在iPhone6下,看一下它的效果啊

通知

而且呢,我们这个是,支持多屏幕的,

通知

界面,是不是有了吧,

然后呢,没内容,

然后呢,多屏幕适配,咱们怎么看,先点开这个“辅助编辑器”,再点击这个Automatic,

通知

再点击这个Preview

通知

这里,是不是直接去添加

通知

5.然后呢,接下来,怎么办,搭建好界面以后,是不是要加载它的数据

最后,是不是显示数据,

所以呢,它的数据,大家知道在哪儿放吧,

在我们今天的资料里面,有一个01foods.plist,

这个里面,就是它的数据,

通知

2)然后呢,02cities.plist,是第二个

3)然后呢,03flags.plist,是第三个

所有案例的数据呢,都在这里,

那我直接把这个01foods.plist,拖进去

拖到Supporting Files文件夹下

通知

点击Finish

通知

接下来,我们先看一下它的数据,

通知

首先,这个food里面,什么情况,

总的,是不是一个数组

Root,是一个数组,对吧,

然后呢,这个数组里面,装了3个,什么,是不是也是3个数组,

然后,每个数组里面呢,

通知

又是一个一个的字符串,对不对,

然后呢,接下来,干嘛,是不是加载它的数据,

通知

这个加载数据,我们是不是写了很多遍了,

所以呢,怎么办,在哪里写,

ViewController.m文件中,

1)先弄一个数组

通知

2)然后呢,懒加载,放到下面

if(你这个没有数据的话,是不是就加载一下)

if(_foods == nil){

_foods = NSArray arrayWithContentsOfFile,

File的话,是不是NSBundle mainBundle

然后呢,pathForResource,是吧

然后呢,文件的名称,是不是“01foods.plist“,吧,

type,直接传一个nil

通知

然后呢,是不是直接返回啊

return _foods;

通知

因为我们这个里面,foods里面,里面的数组,这些数组里面呢,都是一个一个的字符串

所以说,是不是不需要转模型,

如果是字典的话,你可以考虑转模型,对不对,

然后呢,这个数据,现在就加载好了,

通知

好,这就是我们说的第一个,搭建界面

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

清风清晨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值