IOS之未解问题--给UITableView提取UITableViewDataSource并封装瘦身失败

前言:阅读了《更轻量的 View Controllers》,发现笔者这个优化重构代码的想法真的很不错,可以使得抽取的UITableViewDataSource独立写在一个类文件里,并且也写出了了自定义UITableViewCell绑定相关的xib,然后在类别拓展这个UITableViewCell然后赋值。抽取UITableViewDataSource的亮点就是将过程"用model的属性设置cell"通过block来写入并进行了传值。

 

但是小编自己想进一步封装,想达到这个UITableViewDataSource类,能够达到完全独立和封装,提供一个方便用的接口来使用。

但是没有成功,还是留给以后捣鼓捣鼓吧,对应《更轻量的 View Controllers》的github下载地址:github上的示例程序。

下面是我自己的简要分析过程,试图将UITableViewDataSource进行抽取封装:

UITableViewDataSource任务执行的过程

首先将UIViewController对象设置为 UITableView对象的 数据源

    self.tableView.dataSource = self;

或者将UITableView的子类本身设置为 自己的 数据源

    self.dataSource = self;

然后实现数据源协议的方法

#pragma mark - UITableViewDataSource协议方法

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{
    return self.visibleCellRows.count;
}
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
    NSArray* arr =  self.visibleCellRows[section];
    return arr.count;
}
-(NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section{
    return @"Hello";
}
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:self.cellIdentifier
                                                            forIndexPath:indexPath];
    id item = [self itemAtIndexPath:indexPath];
    self.configureCellBlock(cell, item);
    return cell;
}

但是:
    要先拿到模型对象
因为:
    要用到模型对象的count

    模型对象的一些数据:
        UITableViewCell的创建和设置,绑定ID的形式
        对于二维模型数组,先要获得section的title,section的高

数据源内部的方法:
    可以到apple内部头文件查看

==================================================

而封装的需求:
    参数:1、模型数组 2、cell的ID 3、
    业务:1、用模型属性为cell的属性进行赋值

===================================================
文章:http://www.objccn.io/issue-1/
        中是将业务1的逻辑步骤 写在自定义cell的类别中
时间: 2024-10-30 07:37:53

IOS之未解问题--给UITableView提取UITableViewDataSource并封装瘦身失败的相关文章

★大脑的9大未解之谜

大脑的9大未解之谜 1.大脑为什么有时间的意识         为什么人人都自带"生物闹钟",比如想要第二天早晨办的很紧急的事,清晨一起床就想起来了(当然,健忘者另当别论):等待的时间越长,你会感到越急躁.换句话说,你是有意识的.这个复杂的话题从一开始就困扰着科学界,对于意识,只有哲学家给出个一个详细的定义,但意识到底是什么东西,科学家现在也还解答不了.神经学家甚至把意识作为一门现实的研究课题来研究,在欧美的一些大学更有意识学的相关专业. 2.记忆是如何存储和提取的        人的

IOS UITableViewCell详解及按钮点击事件处理实例_IOS

IOS UITableViewCell详解及按钮点击事件处理 今天突然做项目的时候,又遇到处理自定义的UITableViewCell上按钮的点击事件问题.我知道有两种方式,可是突然想不起来之前是怎么做的了,好记性不如烂笔头,还是记录一下吧. 1.第一种方式给Button加上tag值 这里分为两种:一种是直接在原生的UITableViewCell上添加UIButton按钮,然后给UIButton设置tag值,然后在控制器里的方法里通过取数据,做界面跳转等.还是举个例子吧,省的回忆半天. - (UI

★大脑的9大未解之谜

大脑的9大未解之谜 1.大脑为什么有时间的意识         为什么人人都自带"生物闹钟",比如想要第二天早晨办的很紧急的事,清晨一起床就想起来了(当然,健忘者另当别论):等待的时间越长,你会感到越急躁.换句话说,你是有意识的.这个复杂的话题从一开始就困扰着科学界,对于意识,只有哲学家给出个一个详细的定义,但意识到底是什么东西,科学家现在也还解答不了.神经学家甚至把意识作为一门现实的研究课题来研究,在欧美的一些大学更有意识学的相关专业. 2.记忆是如何存储和提取的        人的

spring boot项目中使用jpa的一个未解之谜

公司最近主要的工作就是把之前的一个项目进行几乎全面的重构,之所以说几乎全面,是因为除开业务逻辑外全部换血: 框架由spring+struts2+mybatis改为spring boot+jpa 数据库由sybase+h2改为oracle+redis 子系统之间的交互由activemq改为http 代码具体实现全部重写 对一个运行了若干年的项目进行这样的大动作,路程无疑是漫长而复杂的.在进行了一系列设计文档的编写.评审.修订.再评审之后,终于可以开始码代码了. 本以为码代码终于可以松一口气,没想到

银行借ApplePay反攻 七方利益分润未解

本文讲的是银行借ApplePay反攻 七方利益分润未解,Apple Pay的上线被寄托了太多的期望,银行和银联都想指着它取代支付宝和微信支付,而苹果也是看中了国内的庞大市场.支付宝和微信支付的崛起都得益于大规模的 补贴,而补贴成本的分担机制,却是银联银行苹果不擅长的领域.同时在推广上,如果银行没有激励和动力积极推广营造应用场景,Apple Pay可能叫好不叫座.银联的这场反击战,不太好打. 七方利益主体分润的比例则始终是没有任何一方肯透露的秘密."分润主要是银联和苹果分,剩下的几方都没有话语权.

东方铁塔:国资背景未解突击上市疑点重重

本报记者 孙勇杰 实习生 马娜 发自青岛 "应该是没有,尤其是作为一个部门是没有的."12月7日,中国广播电影电视部(下简称"广电部")设计院桅杆所方面证实,广电部设计院以及桅杆所目前没有持有东方铁塔股份.然而,东方铁塔为何一再缄默?曾在其发展过程中起到重要作用的广电部设计院等国资单位所持股份,如何从东方铁塔中撤资依然疑团重重.东方铁塔隐匿国资背景的原因,也引起舆论关于"资本原罪"的诸多猜测. 韩氏家族背景 在拥有诸多知名企业家的青岛,胶州市北王

ios 调用易联 sdk 后 uitableview 点击事件失效

问题描述 ios 调用易联 sdk 后 uitableview 点击事件失效 调用支付 sdk 后 所有界面被覆盖上莫名手势,uitableview 变成双指点击才能选中 cell求解决办法 解决方案 手势冲突.调好手势出现的时机,即时释放就行.如果一个页面有多个手势,需要对手势进行设置. 解决方案二: 我之前也遇到了这个问题,我觉得是手势冲突了,导致cell selected 的时候系统分辨不了到底改执行哪个事件,我的解决办法是,再 return cell 之前,给 每个cell.bounds

电视有奖猜谜五年未解背后玄机

记者电话采访了山西省广播电影电视局.该局传媒机构管理处的王处长介绍说,山西卫视的"有奖猜谜"节目未经省广播电影电视局宣传处审批.而来自山西卫视广告部的说法是:由于观众对"有奖猜谜"节目投诉较多.同样的事情发生在其他多家省级卫视台.(据3月23日<中国青年报>) 耐人寻味的是国家广电总局早在2005年4月26日向各省.自治区.直辖市广播影视局(厅)等单位就发出<通知>,其中第12条明确规定:广播电视播出机构开设电话和手机短信参与的有奖竞猜类节目

易趣“提现门”疑团未解:裁撤客服 乱象呈现

易趣卖家"提现受阻"隐现行业风险,淘宝们能否独善其身? 一次"提现门"事件,成为压倒易趣卖家信任的最后一根稻草. 上周,易趣"提现门"被曝光,卖家对自有账户的提现从9月21日开始出现未能到账的现象,十几天里近300位卖家心急如焚.投诉未果,最终只能靠成立QQ群商讨对策.一直到10月10日晚间,易趣才首次公开事件进展. 截至目前,易趣的提现已恢复正常,但"提现门"所触发的http://www.aliyun.com/zixun/a