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

    显示多少城市,

    通知

    你怎么去确定呢,

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

    通知

    你显示的是什么省,

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

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

  • 相关阅读:
    详细了解Redis的八种数据类型及应用场景分析
    IOS XCode Objectc SHA256加密
    IDEA Error: java: -source 1.5中不支持 lambda 表达式和 Error:java: Compilation failed
    ros之乌龟做圆周运动and订阅乌龟的位姿信息
    rust学习-http-server端
    【SQLite】一、SQLite简介——MySQL的简洁版
    Swift开发学习
    C#数据去重的5种方式,你知道几种?
    ps2021神经ai滤镜无法使用,ps2021没法用神经元滤镜
    详解:取地址操作符(&)及解引用操作符(*)
  • 原文地址:https://blog.csdn.net/madoca/article/details/132734530