您的位置:首页 > 产品设计 > UI/UE

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~~
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: