【多线程-第三天-NSOperation的练习-tableView异步下载网络图片-重构代码-自定义cell Objective-C语言】

server/2025/3/1 3:17:41/

一、到现在为止,我们解决了很多很多问题

通知

1.现在基本的问题我们已经解决完了,解决完成之后,代码有点儿多,而且刚刚我们也说过,我在这儿返回cell的时候,

通知

这个方法,代码是不是特别多,两屏幕的代码,关键是这段代码做了两件事情,一件事情是返回cell,还有一件事情是,下载图片,

通知

这是问题,那现在怎么解决,我们要让每一个方法,做的事情稍微少一些,我们应该把不同功能的代码,放到不同的类中,这是封装的概念,那我们要对代码进行重构,这是我要做的一件事情,

代码怎么重构呢,那我要把不同的代码放到不同的位置上,我这里做不到特别完美的封装呢,我就给大家提示一下,应该做这么一件事情,

2.首先,我对上面这段代码进行一个重构

通知

运行一下,

通知

这个界面,跟我们示例程序的界面,是有一点儿区别的,我们看一下示例程序,

通知

看到区别没有,图片是不是比较大,后面这两个Label,中间的距离也要大一些,后边还有一个箭头儿,这块儿怎么做呢,刚刚我们是不是用系统提供的cell,系统提供的cell,能不能控制两个Label之间的距离,不能,怎么办呢,自定义cell,

并且,我们要把给cell内部控件儿赋值的过程,给它封装起来,我们这儿已经创建好一个类了,这块儿有一个HMAppInfoCell,

通知

这个类,我们还没用,我们之前的时候,仅仅是拿它演示了一个layoutSubviews什么时候执行的问题,

通知

3.下边,我们来自定义cell,我们先搭建出来那么一种样子,有图片,有imageView,有两个Label,怎么去创建,xib吗,不用创建xib了吧,我们在tableViewController里边,有一个非常方便的东西,在这个cell里边,有一个Prototype Cell,

通知

我们这个Prototype Cell,我们可以改一下,把这个cell改成什么,不是静态的,静是不动,我们要的是动态的,能变的cell,动态原型cell,Content这里,设置成Dynamic Prototypes,

通知

什么是动态原型cell,就是一个模板,就相当于一个xib一样,就是一个cell的模板,将来可以根据这个模板,创建很多很多不同的cell,我们在使用动态原型cell的时候,我们需要给它设置一个可重用标识,它跟xib一样,只是我不用创建xib了,我们可以把这个区域想象成一个xib,

通知

我们首先,要给这个cell绑定自定义类,我们这个类已经创建好了,是HMAppInfoCell,

通知

完了之后,还有一件事情,还要设置可重用id,Identifier,

通知

这个可重用标识,跟我们的代码可重用标识是一样的,我那个标识叫做appInfo,

通知

OK,准备工作到这里就做好了,我们就把它想象成,你就是一个xib,如果你是一个xib的话,我们可以直接往上拖东西,

通知

选中这个cell,右边这个Style应该是Custom,它默认就是Custom,只不过我们以前没用过它,Custom还可以选成别的,系统的这个cell,

通知

选好之后,下边,我们这块儿要放图片,

通知

cell的高度,我之前设置成80了,现在我要放一个图片,这个图片肯定要在cell内部了,还要能够显示全,所以这个图片的大小,我改成&


http://www.ppmy.cn/server/171449.html

相关文章

Mac安装配置使用nginx的一系列问题

brew安装nginx https://juejin.cn/post/6986190222241464350 使用brew安装nginx,如下命令所示: brew install nginx 如下图所示: 2.查看nginx的配置信息,如下命令: brew info nginxFrom:xxx 这样的,是n…

手机大厂如何处理安卓分屏退出后最近任务显示一半问题?

背景: 近来在有学员朋友在群里讨论到了一个分屏退出后,在桌面最近任务中的卡片显示异常问题,虽然他的问题和目前市场上的最近任务显示一半情况不一样。但是这里也刚好启发了群里vip学员们对这个最近任务对分屏task只显示一半画面问题进行相关…

游戏引擎学习第124天

仓库:https://gitee.com/mrxiao_com/2d_game_3 回顾/复习 今天是继续完善和调试多线程的任务队列。之前的几天,我们已经介绍了多线程的一些基础知识,包括如何创建工作队列以及如何在线程中处理任务。今天,重点是解决那些我们之前没有注意到…

网络安全和爬虫的关系

一.网络爬虫的尺寸 1.以爬取网页,玩转网页为目的进行小规模,数据量小对爬取速度不敏感的可以使用request库实现功能(占90%) 2.以爬取网站或爬取系列网站为目的,比如说获取一个或多个旅游网站的爬虫,对数据…

DeepSeek 助力 Vue3 开发:打造丝滑的页眉(Header)

前言:哈喽,大家好,今天给大家分享一篇文章!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏关注哦 💕 目录 Deep…

Metal学习笔记八:纹理

到目前为止,您已经学习了如何使用片段函数和着色器为模型添加颜色和细节。另一种选择是使用图像纹理,您将在本章中学习如何操作。更具体地说,您将了解: • UV 坐标:如何展开网格,以便可以对其应用纹理。 •…

JavaScript 指南:从入门到实战开发

HTML CSS JS 30分钟从零开始入门拿下 HTML_html教程-CSDN博客 30 分钟从零开始入门 CSS-CSDN博客 JavaScript 指南:从入门到实战开发-CSDN博客 前言 hello 兄弟们,这里是网页三件套的最后一个剑客了。这会也是复习补录之前欠你们的哈哈哈哈,js 是这…

python 网络安全常用库 python做网络安全

🍅 点击文末小卡片 ,免费获取网络安全全套资料,资料在手,涨薪更快 最近有同学问我,说想用Python写渗透辅助工具,但是却不知道该如何下手,该怎么办。我告诉他,细化渗透测试的过程&…