iOS Storyboard中cell的复用(相同的cell用在不同的Storyboard上)

一个项目中UI设计往往相似,比如商品列表和商品搜索结果列表很可能就是同一个样式,但是,在storyboard中会放置两个viewcontroller。比如都使用tableView,那么如何重复使用相同的cell在不同viewcontroller上呢?

这个操作有点秀.jpg

方法:复制粘贴UI,子类继承显示。(用着一时爽,一直用一直爽)。

具体步骤,以tableview为例

步骤1:

复制一个cell到新的tableview上(包含所有UI内容)

步骤2:

创建一个子类继承与原来的cell类。

步骤3:

新的cell的class类型设置为此,reuseid 一样。

步骤4:

将新的子类使用相同名称的连线和UI进行绑定。(复制父类的,子类中重新连线即可,使用同一个名字进行连线将大大方便后续的操作。)

至此,已经完成的重用。一般说来cell都会有绑定的model,会重写setModel 方法,然后在其中处理数据,完成UI的显示。步骤4中使用同一个名称即可做到子类中一行代码都不写,就能正常使用的效果。

啊,真香~~
写在最后:

1.关于原理的一点解释:storyboard中加载都是通过initwithcoder的方式(其本质是文件加载),所以如果只设置cell的class是不能加载出UI的,因为class中没有UI,UI绑定在原始的那个cell的storyboard中,而不是class中。

2.为什么什么都不用写就可以完正常的赋值和展示呢?
子类有父类属性这个是没有问题的,model自然可以进行赋值。连线为什么不行,原因如1中所述,连线在子类中是nil,所以必须重新复写父类属性以完成连线,这样子类中才能正常使用。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容