三大方式自定义cell

一、简略版

(一)通过Storyboard自定义Cell:

(1)控制器中:

(a)取出cell、模型数据,并完成模型赋值;

(2)自定义cell类中:

(a)重写model属性的set 方法给子控件设置数据。

(3)Storyboard中:

(a)拖入UITableViewController,初始化、更改类名;
(b)更改cell类名、设置复用标识符identifier;
(c)创建子控件并完成属性关联。

(二)通过Xib自定义Cell:

(1)控制器中:

(a)创建UITabelView,设置代理、完成【nib】注册等;
(b)取出cell、模型数据,并完成模型赋值(如果未注册,则自己加载nib文件);

(2)自定义cell类中:

(a)重写model属性的set 方法给子控件设置数据。

(3)Xib文件中:

(a)拖入UITabelViewCell,更改类名、设置identifier;
(b)创建子控件并完成属性关联。

(三)通过Code自定义Cell:

(1)控制器中:

(a)创建UITabelView,设置代理、完成【类名】注册等;
(b)取出cell、模型数据,并完成模型赋值(如果未注册,则自己加载nib文件);

(2)自定义cell类中:

(a)重写initWithStyle: reuseIdentifier:定制cell子控件并添加至cell的contentView上;
(b)重写layoutSubviews设置子控件的frame;
(c)重写model属性的set 方法给子控件设置数据。

二、详细版

(一)通过Storyboard自定义Cell:

(1)创建CHJDealsTableViewController,继承于UITableViewController;

(2)创建空的storyboard文件,拖入UITableViewController,勾选初始化控制器箭头➡️,并更改storyboard中UITableViewController的类名;


添加并初始化UITableViewController
更改类名

(3)创建自定义cell类CHJDealsCell,继承于UITableViewCell;

(4)更改cell的类名并设置复用标识符identifier;


更改cell的类名

设置identifier

(5)创建cell的子控件并完成属性的关联;
创建cell子控件
完成属性关联

(6)创建CHJDealsModel类,继承于NSObject,完成模型转换;

(7)CHJDealsTableViewController中:取出模型数据,传给自定义的cell类CHJDealsCell;
取出cell,传递model

(8)重写模型对象的set方法,设置数据;
取出数据,完成设置

总结:
(a):UIStoryboard描述的是UIViewController级别的,用故事版来自定义cell(cell位于UITableView上)就意味着UITableView在故事版在的某个UIViewController上,它可以是个普通的UIViewController,也可以是UITableViewController;UITableView可以位于控制器的view上,也可以取代控制器view直接充当其view;
UITableViewController 的使用:https://www.jianshu.com/p/0fdec58da1d2
(b)在设置模版cell时,已经设置了cell的复用标识符,相当于cell已经注册过了,故取出cell时可以直接取到,不会为空;
(c)Model类完成数据转换,Cell类持有model并赋值,中间通过ViewController类完成数据调度,各居其位,各司其职;
(4)【UIStoryboard】 + 【UITableViewController】 =
【UIStoryboard】 + 【UIViewController】 + 【UITableView】 + 【Cell】;

(二)通过Xib自定义Cell:

(1)控制器中:创建 UITableView,遵守协议,设置代理,重写协议方法;
(2)创建CHJDealsModel类,继承于NSObject,完成模型转换;
(3)创建CHJDealsCell类,继承于UITableViewCell,并持有model对象;
(4)创建Xib文件、添加cell、更改类名、设置identifier并添加子控件完成关联;

(5)CHJDealsController中:取出模型数据,传给自定义的cell类CHJDealsCell;
取出cell,传递model

(6)CHJDealsCell中重写模型对象的set方法,设置数据;
取出数据,完成设置

总结:
(1)通过Xib自定义Cell其实是将UIStoryboard的工作【创建UITableView+创建UITabelViewCell】分别分散到UIViewController【创建UITableView】和Xib【完成UITabelViewCell】中完成,Model类和Cell的职责和工作量不变;
(2)取出Xib中的cell前应该完成注册或通过直接加载nib文件;

(三)通过Code自定义Cell:

(1)控制器中:创建 UITableView,遵守协议,设置代理,重写协议方法;
(3)创建CHJDealsModel类,继承于NSObject,完成模型转换;
(4)创建CHJDealsCell类,继承于UITableViewCell,并持有model对象;重写initWithStyle: reuseIdentifier:方法定制cell子控件并添加至cell的contentView上、重写layoutSubviews设置子控件的frame、重写model属性的set 方法给子控件设置数据;
(5)CHJDealsController中:取出模型数据,传给自定义的cell类CHJDealsCell;
(6)CHJDealsCell中重写模型对象的set方法,设置数据;

总结:
(1)通过纯代码自定义Cell其实是将Xib的工作【创建UITabelViewCell】在initWithFrame:中完成,Model类和Cell的职责不变;
(2)取出cell前应该完成注册或通过直接创建某种类型的cell;

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。