UITableview代理方法与Viewcontroller分离
2016-02-28 21:51
465 查看
序
在objcio.cn中有一篇文章更轻量的 View Controllers其中有一小节,是说把UITableview的datasource和delegate分离出Viewcontroller的。我也试着实现了一下,随便把思路总结下~
DEMO
建议先下载demo,再结合下面的分析,会好理解点。地址https://github.com/Resory/RYDatasource
逻辑
既然我们要把UITableview的协议方法分离出来,就得有一个人去接,在这里我们把这个人叫Datasource。可以理解它为中间人。这个中间人就是以后实现UITableview协议方法的地方。
要中间人实现UITableview协议方法,就得知道UITableview的数据,复用,事件等要素。这些数据由Viewcontroller来传。这三个要素分别定义为serverData,cellIdentifiers,configSelectedBlock
自此我们可以知道,只要Viewcontroller传了serverData,cellIdentifiers,configSelectedBlock这三个基本参数,中间人就可以实现UITableview协议方法了。
实现
在Viewcontroller.m中。我们命名了三个全局变量,如下代码
(configSelectedBlock不需要设置全局,到时候在函数中直接生成即可)
还是在Viewcontroller.m中.我们把数据,复用,事件设置好后,看看如何调用中间人。
数据
复用
初始化"中间人"
把中间人设置为UITableview的协议方法执行者
我们进去中间人看看它到底做了什么,下面的代码可以清晰看到。中间人除了多了初始化方法来接受数据外,其他方法都是UITableview的协议方法
最后我们来看下cell里面的方法,也是一眼能看懂的代码··
挫就挫吧,总得来张图。
最后
UITableview协议方法分离出Viewcontroller后,Viewcontroller确实清爽了不少。但同时也带了不便,比如说又多了一个文件,又比如说cell的点击事件就得用一个block来回调,如果是cell里面的子view的点击事件就更不利索了。所以有利就有弊吧。还是得结合实际选择最适合自己的开发方式~
如果你有疑问或者发现错误请留言给我
喜欢就点个赞,点个星什么的。3Q~~
在objcio.cn中有一篇文章更轻量的 View Controllers其中有一小节,是说把UITableview的datasource和delegate分离出Viewcontroller的。我也试着实现了一下,随便把思路总结下~
DEMO
建议先下载demo,再结合下面的分析,会好理解点。地址https://github.com/Resory/RYDatasource
逻辑
既然我们要把UITableview的协议方法分离出来,就得有一个人去接,在这里我们把这个人叫Datasource。可以理解它为中间人。这个中间人就是以后实现UITableview协议方法的地方。
要中间人实现UITableview协议方法,就得知道UITableview的数据,复用,事件等要素。这些数据由Viewcontroller来传。这三个要素分别定义为serverData,cellIdentifiers,configSelectedBlock
自此我们可以知道,只要Viewcontroller传了serverData,cellIdentifiers,configSelectedBlock这三个基本参数,中间人就可以实现UITableview协议方法了。
实现
在Viewcontroller.m中。我们命名了三个全局变量,如下代码
(configSelectedBlock不需要设置全局,到时候在函数中直接生成即可)
数据
最后
UITableview协议方法分离出Viewcontroller后,Viewcontroller确实清爽了不少。但同时也带了不便,比如说又多了一个文件,又比如说cell的点击事件就得用一个block来回调,如果是cell里面的子view的点击事件就更不利索了。所以有利就有弊吧。还是得结合实际选择最适合自己的开发方式~
如果你有疑问或者发现错误请留言给我
喜欢就点个赞,点个星什么的。3Q~~
相关文章推荐
- Dynamic web module 3.0 requires Java 1.6 or newer解决办法
- 4.5.3 Async耗时操作必须由子线程完成,更新UI需要由主线程完成
- UITableView介绍 之 基本用法
- UINavigationController相关
- POJ Ultra-QuickSort 逆序数 树状数组 归并排序
- CharSequence接口
- Android之使用Android-query框架进行开发
- iOS UIViewController生命周期控制
- EasyUI DataGrid 多级表头设置
- EasyUI DataGrid 多级表头设置
- EasyUI DataGrid 多级表头设置
- Java中String和CharSequence的关系
- 安卓消息机制中的消息队列MessageQueue的插入轮询算法
- npm Guide(二)
- iOS开发UI进阶篇 — 基于手势识别的侧滑展开菜单栏
- LightOJ 1188 Fast Queries(离线树状数组)
- POJ3368/HDU1806/UVa11235 Frequent Values 游程编码+RMQ
- UITextField 限制输入字数
- UIView
- UVA 540 Team Queue(队列)