美文网首页
三大方式自定义cell

三大方式自定义cell

作者: 薛定谔的汪汪 | 来源:发表于2018-12-27 22:26 被阅读0次

    一、简略版

    (一)通过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;

    相关文章

      网友评论

          本文标题:三大方式自定义cell

          本文链接:https://www.haomeiwen.com/subject/dzedlqtx.html