【PickerView案例10-国旗选择界面02 Objective-C预言】

2023-09-18 13:59:54

一、好了,我们继续来实现这个国旗选择界面:

通知

1.它的界面里面,是不是很简单,就一个UIPickerView,就完事儿了

然后,显示的每一行内容呢,

1)一个文字Label

2)一个图片

那大家应该有意识,它返回的应该是一个View,对吧,

代理方法里面,有一个返回View的,viewForRow:

viewForRowInComponent:

2.然后呢,我们呢,就新建了一个项目,

然后呢,我把这个项目打开,

1)搭建界面:一个PickerView,就完事儿了

2)加载数据:把这个03flags.plist,加载进来,

通知

3)还有一个:我们的图片资源,也给它放进来了,

通知

这么多国旗图片,

4)然后呢,再来看一下这个plist啊

国旗这个plist里面,也是,一个数组,包了几个字典,对吧,

通知

也可以字典转模型,

通知

5)回到Controller里面,

通知

懒加载

通知

关起来了,不再看了,

然后呢,

6)接下来,设置它的数据源、代理对象、

遵守对应的协议,

通知

实现相应的方法:

通知

7)它的组数,是多少呢:直接就是1组,

8)它的行号呢:有多少个国家模型,就有多少行啊,

通知

9)那最后,我们说:需要返回一个UIView,

pickerView:它是不是有一个viewForRow:方法

有人说,这些方法太多了,我记不住,记不住怎么办呢,也不用去记啊,我们只需要记住它的UIPickerView的头文件,去看

通知

点这个:UIPickerView

或者点它的:DataSource、Delegate

都可以

没有必要死记硬背啊,

我们只需要了解这个思路,

这个思路就可以了:

通知

2.那最后,我们说,返回、每一行返回什么view的话,

是不是根据tableView,去套的,

有印象吧,前面我们在写tableView的时候,

每一行返回什么样的cell,

那是怎么做的,

1)第一步:创建Cell

2)第二步:给Cell赋值、设置数据、

3)第三部:返回Cell

那我们这个View,也是一样的:

1)第一步:创建View

2)第二步:给View设置数据

3)第三步:返回View

有人说:我们是不是可以创建一个xib

这是一个xib、左边一个Label:

通知

右边儿一个ImageView:显示一个图片,对吧,

然后呢,最后是不是可以给它设置数据,最后返回View:

通知

最关键的就是这一块儿、其他都是一样一样的:

通知

3.好,大家说,怎么办:

1)第一步:是干嘛,创建View,创建View的话,你怎么创建呢,

我们这个View,是什么,我们要给它做的,是不是一个xib

通知

那怎么办

是不是先创建一个xib

通知

然后呢,command + N、

通知

User Interface:View

直接带一个View进来:

然后呢,Name:

通知

Name:HMFlagView.xib

通知

现在呢,我们这个xib有了:

通知

放上来

通知

这样的话,我还是加一个Group:

通知

1)Group Name:View,

通知

2)Group Name:Controller,

3)Group Name:Other,

4)Group Name:Model,

通知

这两个是不是我们的模型:HMFlag.h、HMFlag.m

通知

AppDelegate.h、AppDelegate.m、这两个是不是放在Other里面

控制器里面,按Shift、把这三个:

通知

放到控制器里面

通知

有的老师是不是把Storyboard放到View里面,

HMFlagView.xib:这个放到View里面

通知

哦了:

通知

那这个文件放置呢,你自己根据你个人习惯放置,但是其他的基本上都是这么一个结构

那下面这三个,放到:

通知

放到SupportingFiles里面

通知

4.好,那我们继续,现在这个xib有了

然后呢,是不是把它改一改:

通知

我们先把它约束加一下:这个Size:改成freedom

通知

1)Size:改成freedom,是不是可以修改它的大小,

2)然后,这个Status Bar:改成None,

通知

电池是

更多推荐

【网络安全】黑客自学笔记

1️⃣前言🚀作为一个合格的网络安全工程师,应该做到攻守兼备,毕竟知己知彼,才能百战百胜。计算机各领域的知识水平决定你渗透水平的上限🚀【1】比如:你编程水平高,那你在代码审计的时候就会比别人强,写出的漏洞利用工具就会比别人的好用;【2】比如:你数据库知识水平高,那你在进行SQL注入攻击的时候,你就可以写出更多更好的S

大数据时代元数据的重要性

元数据,是描述了数据本身(如数据库、数据元素、数据模型),数据表示的概念(如业务流程、应用系统、软件代码、技术基础设施,数据与概念之间的联系。元数据可以帮助组织理解其自身的数据、系统和流程,同时帮助用户评估数据质量,对数据库与其他应用程序的管理来说是不可或缺的。它有助于处理、维护、集成、保护和治理其他数据。在大数据的海

spark 精华总结

面试题:Hadoop的基于进程的计算和Spark基于线程方式优缺点?答案:Hadoop中的MR中每个map/reducetask都是一个java进程方式运行,好处在于进程之间是互相独立的,每个task独享进程资源,没有互相干扰,监控方便,但是问题在于task之间不方便共享数据,执行效率比较低。比如多个maptask读取

Elasticsearch(四)深分页Scroll

一、前言1.1、scroll与from+size区别ES对于from+size的个数是有限制的,二者之和不能超过1w。当所请求的数据总量大于1w时,可用scroll来代替from+size。from+size在ES查询数据的方式步骤如下:1、先将用户指定的关键字进行分词;2、将词汇去分词库中进行检索,得到多个文档的id

数据结构简述,时间、空间复杂度,学习网站推荐

目录IT学习路线相关坚韧大厚书相关有趣/耐看书或视频数据结构与算法学习网站推荐刷题时间、空间复杂度数据结构简述基本概念数据结构与算法简述和CS综述整理。本文非基础的教程,本文会列出大量学习和参考网站。老惯例,一个文章是一个集大成(本文借助了语音输入(PC版讯飞输入法)由此加速码字,但仍保持简洁的文风)。数据结构+算法=

【ES实战】ES中关于segment的小结

文章目录ES中关于segment的小结ES中segment相关的原理在Lucene中的产生segment的过程。(Lucenecommit过程)ES为了实现近实时可查询做了哪些缩短数据可被搜索的等待时长增加数据的可靠性优化segment的数量段合并自动合并强制合并相关配置translog合并策略相关合并调度相关相关AP

王道408计组汇编语言部分学习总结

x86汇编语言指令基础x86处理器中程序计数器PC通常被称为IP高级语言—>汇编语言—>机器语言x86架构CPU,有哪些寄存器EAX通用寄存器EBXECXEDXESI变址寄存器变址寄存器可用于线性表、字符串的处理EDIEBP堆栈基指针堆栈寄存器用于实现函数调用ESP堆栈顶指针moveax,ebx#寄存器—>寄存器mov

WebGPU学习(10)---如何利用 WebGPU 实现高性能

虽然是WebGPU,但是速度很慢!?我们将解释如何充分利用WebGPU性能。这次我们以绘制大量物体为例,根据“使用纹理”中的代码进行一些更改并绘制900个立方体。要均匀分布立方体,可以按如下方式更新worldMatrix:for(leti=0;i<30*30;i++){draw({context,pipeline,ve

Git学习

什么是Git?Git是一个分布式版本控制系统,用于追踪文件和项目的变化。它可以帮助开发者或团队有效地协同工作,并提供版本管理、分支管理、代码合并等功能。Git的设计目标是速度快、简单易用。Git的基本概念仓库(Repository):Git仓库是存储代码和历史记录的地方。它可以位于本地计算机或远程服务器上。每个仓库都有

java自定义异常

首先跟前端商量好,用errMessage作为异常信息传输的关键字。1.创建一个公共异常类如果要获取"非法参数"的错误消息,可以使用CommonError.PARAMS_ERROR.getErrMessage()方法来获取。这种方式使得代码更具可读性和维护性。publicenumCommonError{//Java的枚举

Java中stream是什么?有什么作用?如何使用?

Java中stream是什么?有什么作用?如何使用?在Java中,Stream(流)是一种用于操作集合(Collection)、数组等数据源的API。它提供了一种功能强大且表达力高的编程模型,可以用更简洁、更具可读性的方式处理数据。Stream的主要作用是进行数据的转换、筛选、聚合等操作,可以极大地简化对数据的处理。使

热文推荐