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

news2025/1/12 17:51:00

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

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

显示多少城市,

通知

你怎么去确定呢,

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

通知

你显示的是什么省,

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/998964.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringMVC文件上传与下载、JREBEL使用

目录 一、引言 二、文件的上传 1、单文件上传 1.1、数据表准备 1.2、添加依赖 1.3、配置文件 1.4、编写表单 1.5、编写controller层 2、多文件上传 2.1、编写form表单 2.2、编写controller层 2.3、测试 三、文件下载 四、JREBEL使用 1、下载注册 2、离线设置 一…

“文件的上传与下载:实现与优化“

目录 引言1.文件的上传2.文件的下载3. JRebel安装使用4. 文件批量上传总结 引言 在开发过程中,文件的上传与下载是常见的需求。本篇博客将以CSND为例,介绍文件上传与下载的常见方式,以及如何通过优化提升性能和用户体验。 1.文件的上传 使…

【Python算法Algorithm】专栏导读

1 什么是算法(Algorithm)? 算法是一组用于解决特定问题或执行特定任务的有序、精确的计算步骤的集合。它可以被认为是一种计算机程序,但更加抽象和数学化。 算法的主要目标是将输入数据转化为所期望的输出结果,而且要在…

华为云云耀云服务器L实例评测|一键部署,畅享高效华为云MySQL

本文目录 一、前言1、云耀云服务器L实例介绍2、产品优势 二、购买/使用1、首界面购买2、根据自己需求购买对应的3、购买成功过后返回首页面---》启动4、重置密码5、远程登录6、输入账户密码提示登陆成功7、为了方便拷贝安装命令,可以选择本地鼠标8、点击复制粘贴9、…

【Spring面试】五、Bean扩展、JavaConfig、@Import

文章目录 Q1、如何在Spring创建完所有的Bean之后做扩展?Q2、Spring容器启动时,为什么先加载BeanFactoryPostProcess?Q3、Bean的生产顺序是由什么决定的?Q4、Spring有哪几种配置方式Q5、JavaConfig是如何替代spring.xml的?Q6、Com…

InVideo AI:用人工智能轻松制作视频

简介: InVideo AI 是一款在线视频制作工具,使用人工智能来帮助用户快速、轻松地制作高质量的视频。该工具提供多种功能,包括: 链接: ai.invideo.io 仪表盘: 历史记录: 创建视频&#xff1a…

【Linux从入门到精通】信号(初识信号 信号的产生)

本篇文章会对Linux下的信号进行详细解释。主要内容是什么是信号、信号的产生、核心转储等问题。希望本篇文章会对你有所帮助。 文章目录 引入 一、初识信号 1、1 生活中的信号 1、2 Linux 下的信号 1、3 信号进程所得的初识结论 二、信号的产生 2、1 用户通过终端输入产生信号 …

2023年9月NPDP产品经理国际认证报名来这里就对了

产品经理国际资格认证NPDP是新产品开发方面的认证,集理论、方法与实践为一体的全方位的知识体系,为公司组织层级进行规划、决策、执行提供良好的方法体系支撑。 【认证机构】 产品开发与管理协会(PDMA)成立于1979年,是…

针对电子企业生产特征,提出MES管理系统解决方案

随着全球经济一体化的不断加剧,中国作为一个制造业大国,在电子组装、SMT贴片、PCB组装等领域取得了很大的突破,企业规模和数量随着不断增加,造成成本压力增加、产品生命周期缩短、设备日益复杂且缺少透明度以及不明需求预测&#…

SLAM从入门到精通(编写第一个package)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 前面我们安装了ROS环境,接着就可以开始进行ROS程序的开发了。在开发之前,我们有几个概念需要厘清一下。第一个是workspace&…

linux系统中LVM磁盘动态扩容方案

LVM动态扩展方案 信息确认: 磁盘空间确认 挂载磁盘的文件系统确认 lv卷组信息确认 1、确认磁盘已扩容:首先确认物理磁盘(vdb)已成功扩容至500G。 fdisk -l2、重新分区:将物理磁盘上多出的200G空间格式化为新的分区…

geopandas笔记:汇总连接两个区域的边

比如这样的两个区域,我们想知道从蓝到绿、从绿到蓝都有哪些边 1 读取openstreetmap import osmnx as ox import geopandas as gpdGox.graph_from_place(Singapore,simplifyTrue,network_typedrive)ox.plot_graph(G) 2 得到对应的边的信息 nodes,edgesox.graph_to_…

怎么在图片上编辑文字?这几种图片编辑工具了解下

在图片上编辑文字可以带来许多好处。首先,它可以更好地说明图片的内容和意义。有时候,一张图片可能不够清晰地传达想要表达的信息,但是通过在图片上添加文字说明,可以更好地让观众理解图片的意义。其次,编辑文字可以使…

AliExpress速卖通支付下单流程(测评补单优势及技术要点)

1. 打开全球速卖通官网,点击右上方的Join (注册)填写邮箱和密码,验证完毕后注册成功 2. 点击右上角的Account(账户)进入用户菜单 3. 点击导航了第一个My AliExpress(我的速卖通)选择左边My Shipping Address&#xff0…

VSCode自动分析代码的插件

今天来给大伙介绍一款非常好用的插件,它能够自动分析代码,并帮你完成代码的编写 效果如下图 首先我们用的是VSCode,(免费随便下) 找到扩展,搜索CodeGeeX,将它下载好,就可以实现了 到…

PathVariable注解

postman测试传参:http://localhost:8080/admin/employee/2 PathVariable PathVariable注解用法和作用

淘宝商品描述详细信息API接口

淘宝商品描述详细信息API接口是一个用于获取淘宝商品详细信息的API,通过它可以获取到商品的标题、价格、图片等信息。通过淘宝商品描述详细信息API接口,开发者可以方便地获取宝贝的相关信息,并将它们用于各种应用场景中。淘宝商品描述详细信息…

模板语言-Handlebars

Handlebars 是什么 Handlebars 是一种简单的模板语言。 它使用模板与传入的对象来生成HTML 或者其他文本格式。 Handlebars 模板看起来像是嵌入了handlebars 表达式的普通文本。 <p> {{firstname}} {{lastname}}</p> 一个handlebars表达式是使用两对尖括号包裹…

飞猪店铺小管家软件需求分析说明书

飞猪店铺小管家软件 项目背景&#xff1a; 在飞猪店铺运营过程中&#xff0c;客服人数不足导致客服团队忙不过来&#xff0c;容易出现订票信息错误&#xff0c;进而客户无法顺利参观景点&#xff0c;频繁投诉。这种情况不仅影响客户体验&#xff0c;还可能导致商家因赔付而承受…

玖章算术叶正盛:为什么 PostgreSQL 不如 MySQL 流行?|3306π活动预告

议题大纲 PostgreSQL 是业界功能最强大的开源数据库&#xff0c;为什么在全球流行度没有 MySQL 高&#xff0c;本次分享主题计划从产品、技术、商业等方面综合分析两个数据库的竞争。 议题方向&#xff1a; PostgreSQL 与 MySQL 数据库简介 市场分析 产品定位 技术优劣势 …