【UIPickerView案例07-省市选择界面数据展示03-城市选择Bug修复 Objective-C语言】
移动开发
2023-09-11 17:30:57
阅读次数: 0
一、咱们先把前面的内容捋一下——省市选择界面:
1.首先呢,我们说,实现一个案例,第一步,先看界面,
1)第一步:先看界面,
2)第二步:分析一下它的基本结构,
3)第三步:搭建界面,
4)第四步:加载数据,
5)第五步:显示数据,
是不是五步,
大的就这五步,
但是这个搭建界面,
就一个PickerView,以及两个Label,
还用说吗,
不用吧,
这个很简单,我们直接过了啊,
2)然后,加载数据,
需要说吗,
不用吧,直接加载起来,一个数组,
这个数组里面,装的都是一些,字典,
然后呢,我们想把它转成模型,
那么,有人说,字典,我们为什么要把它转成模型,
是不是因为顺序的关系,
大家说一下啊,这个不是因为顺序的关系,
是因为,我们在写代码的时候,如果你不去转模型,
也没有任何问题,
它的顺序,还是这个,这里面写的是什么顺序,就是什么顺序,
但是,往下面再写,
这些内容,你取的时候,怎么取,
是不是通过Key去取的,
但是这个Key呢,
我们是不是@一个字符串儿,
有时候呢,现在我们是不是很少,所以呢,不出错,但是,如果它有十个二十个呢,是不是就不能保证每一次都写对啊,
所以呢,我们就去字典转模型,
这么一个原因,
为了保证我们每一次写的时候,直接“点儿”出来、“点儿”出来,
很方便的,可以保证我们写的正确性,
这个原因,所以去做这个字典转模型,
那,加载数据里面,
我们是不是直接把这个文件传进来,直接写成一句话了,
然后呢,加载成一个字典数组,
那紧接着呢,是不是遍历,转模型,
然后呢,转模型的过程中,
是不是通过类方法转,但是,
这个模型,你能不能直接添加到这个_provinces,里面,
我们这个数组,是不是不可变数组,
你不能往里面加东西的,
所以呢,先用一个临时数组,
把你转出的这些模型,保存起来,
然后,这个遍历,结束以后,是不是这个临时数组里面,保存的就是我们plist文件里面,所有的字典,转出来的模型,对吧,
然后呢,我们最后,把这个临时数组,交给我们的模型数组,然后呢,返回,
但是我们这里,说了一句话,
_provinces = [arrM copy];
这是不是有时候,也有人会这么写,
copy一份儿,不可变数组,返回,
//拷贝一份不可变数组交给模型数组
这么写,也是可以的,
只要知道,就好了,
因为有时候,别人可能会这么写,
我们看的时候,能看懂,就OK,
好,这是我们加载数据,做完了,
4)紧接着,是不是就要显示数据
显示数据,怎么做呢,第一步,你是不是得设置它的数据源、代理对象、
我们在哪儿设置的,
是不是直接在Main.storyboard,然后呢,右键,
两个属性,拖上去,
设置数据源、代理对象、我们前面TableView,是不是也是一样,
那、然后呢,在控制器里面,你是不是要遵守对应的协议,
也就是我们最上面,UIPickerViewDataSource、UIPickerViewDelegate
遵守完协议以后呢,
是不是实现数据源方法、代理方法、
数据源方法里面,这两个方法
是什么呢,是@required,必须要实现的,
1)numberOfComponentsInPickerView:但是呢,这个有多少组这里呢,
我们是不是直接写死的,
你不能根据这个数组,去返回吧,
我们这个模型数组里面,装的是一堆的模型,
根本没有那么多的组,
所以,你直接返回,就可以了,
2)numberOfRowsInComponent:component
然后呢,是每一组里面,有多少行,
这个,我需要给大家前面写一个://每组返回多少行吗
需要这样写吗,你是不是直接看这个就行了:numberOfRowsInComponent,
numberOfRows:跟TableView里面,是一样一样的,
然后呢,这里面,我们就需要分情况了,
因为我们省市选择,跟我们点餐系统,一个区别,是什么,
它两组是有关系的,对不对,
所以,如果你是第0组,
怎么样呢,显示多少行,是不是你这个cities里面,有多少个,
有多少个省,你就显示多少行,
所以呢,我们直接返回那个模型数组的count,就可以了,
2)紧接着,城市,这一组,
显示多少城市,
你怎么去确定呢,
显示多少城市,你是不是首先得知道
你显示的是什么省,
只有这个省里面的城市,才是我们要显示的,对不对,
要是拿起它的省,行不行,
转载自blog.csdn.net/madoca/article/details/132734530