【UIPickerView案例07-省市选择界面数据展示03-城市选择Bug修复 Objective-C语言】

一、咱们先把前面的内容捋一下——省市选择界面:

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)紧接着,城市,这一组,

显示多少城市,

你怎么去确定呢,

显示多少城市,你是不是首先得知道

你显示的是什么省,

只有这个省里面的城市,才是我们要显示的,对不对,

要是拿起它的省,行不行,

你可能感兴趣的:(Objective-C,bug,objective-c,算法)