视图交互--表视图(UITableView)的cell交互析略
在表视图UITableView的cell上经常有一些交互,根据项目开发中的情况,需要对此进行一些规范。总结出了几种交互方法,这些方法在其他视图的交互上同样可以适用。用一个简单的例子来举例说明一下,其他交互类型与此类似,希望读者举一反三。
需求:在一个cell上,当点击按钮时,将左侧的文字同样展示在右侧显示部分。

这个需求,最主要的部分,就是获取所点击按钮的cell的问题,然后通过cell将左侧的label上的文字显示在右侧的label上。
方法:
(一)交互第一种:给cell的按钮tag赋值添加事件(不推荐);
(二)交互第二种:通过代理delegate;
(三)交互第三种:block
解释:
/** (不推荐)
* (一)交互第一种:给cell的按钮tag赋值添加事件
* 做法:
* 1.给每一个cell上的按钮赋值tag;
* 2.在按钮事件中根据tag取出对应的cell
* 或者
* 1.根据按钮事件中的参数btn,开始回溯其父视图,直至找到对应的cell,这种情况在iOS7系列的系统上可能会出问题,可以查看我的另外一篇博客:http://www.cnblogs.com/xingxingLove/p/5183071.html
*/
cell.clickBtn.tag = 100 + indexPath.row;
[cell.clickBtn addTarget:self action:@selector(cellBtnClicked:) forControlEvents:UIControlEventTouchUpInside];
/**
* (二)交互第二种:通过代理delegate
* 做法:
* 1.在cell中声明一个协议,协议方法中用来处理按钮点击事件
* 2.在控制器中遵守代理,实现代理方法
* 3.当cell中的按钮触发时,控制器中的代理方法得到响应
*/
cell.delegate = self;
/**
* (三)交互第三种:block
* 做法:
* 1.在cell中声明block属性
* 2.在控制器中实例化时赋值调用
*/
cell.CustomTableViewCellBlock = ^(CustomTableViewCell *cell, UIButton *button){
NSIndexPath *indexPath = [self.demoTableView indexPathForCell:cell];
[cell valueText:self.demoSourceArr[indexPath.row]];
};
分析:
第一种:通过tag值来寻获当前的cell,相当于需要查询当前控制器中的所有view的tag值直至找到对应tag值的cell,效率低下,不容易进行协同维护,不推荐使用。
第二种:通过代理来实现,能够进行快速响应,消息接收灵敏。
第三种:通过block,更加简洁。
所以一般的话,推荐使用代理或者block来进行类似于这种视图之间的交互。
这里只是给出一些思路,demo中会有更加详细的解释,具体的demo可以查看我的Github:https://github.com/hanweixing/ViewReactDemo
视图交互--表视图(UITableView)的cell交互析略的更多相关文章
- 利用AutoLayout适配滚动视图和表视图
1.新增一个contentView,设置为与滑动视图的父视图等高等宽. 2.利用代码 if(_MyTestTableView.frame.size.height != _MyTestTableView ...
- UI学习笔记---第十天UITableView表视图编辑
UITableView表视图编辑 表视图编辑的使用场景 当我们需要手动添加或者删除某条数据到tableView中的时候,就可以使用tableView编辑.比如微信 扣扣中删除和某人的通话 当我们需要手 ...
- UI学习笔记---第九天UITableView表视图
UITableView表视图 一.表视图的使用场景 表视图UITableView是iOS中最重要的视图,随处可见,通常用来管理一组具有相同数据结构的数据 表视图继承自UIScrollView,所以可以 ...
- iOS企业级开发初级课程-表视图(13集)
首先了解了表视图的组成.表视图类的构成.表视图的分类以及表视图的两个重要协议(委托协议和数据源协议),对表视图有了一个整体上的认识.接下来我们掌握了如何实现简单表视图和分节表视图,以及表视图中索引.搜 ...
- UI学习笔记---第十一天UITableView表视图高级-自定义cell
自定义cell,多类型cell混合使用,cell自适应高度 自定义cell就是创建一个UITableViewCell的子类 把cell上的空间创建都封装在子类中,简化viewController中的代 ...
- IOS开发中UITableView(表视图)的滚动优化及自定义Cell
IOS开发中UITableView(表视图)的滚动优化及自定义Cell IOS 开发中UITableView是非常常用的一个控件,我们平时在手机上看到的联系人列表,微信好友列表等都是通过UITable ...
- UITableView 表视图编辑
UITableViewController(表视图控制器)继承自UIViewController,自带一个tableView self.view不是UIView而是UITableView dataso ...
- UITableView表视图以及重建机制
表视图UITableView 表视图UITableView,是IOS中最重要的视图,随处可见 表视图通常用来管理一组具有相同数据结构的数据 UITableView继承自UIScrollView,所 ...
- UI:UITableView表视图
表视图 UITableView,iOS中最重要的视图,随处可⻅见. 表视图通常⽤用来管理⼀一组具有相同数据结构的数据. UITableView继承⾃自UIScrollView,所以可以滚动,表视图的每 ...
随机推荐
- Spring Cloud(2.0)能力大致列表
微服务九大特性 出自Martin Fowler的<Microservices> 服务组件化 按业务组织团队 做"产品"的态度 智能端点与哑管道 去中心化治理 去中心化管 ...
- 常用软件URL
1.MSDN:https://msdn.itellyou.cn/ 2.软碟通(UltraISO)http://rj.baidu.com/soft/detail/11522.html?ald Ultra ...
- PHP 函数 ignore_user_abort()
ignore_user_abort 设置与客户机断开是否会终止脚本的执行. 本函数返回 user-abort 设置的之前的值(一个布尔值). int ignore_user_abort ([ st ...
- Spring中的注解 @Qualifier
在使用Spring框架中@Autowired标签时默认情况下使用 @Autowired 注释进行自动注入时,Spring 容器中匹配的候选 Bean 数目必须有且仅有一个.当找不到一个匹配的 Bean ...
- google chrome & preferences & languages
google chrome & preferences & languages language settings https://www.google.com/preferences ...
- ECharts学习总结(二)-----图表组件漏斗图(funnel)
今天在学习ECharts时,想要在ECharts图表的原生态Demo中抠出漏斗图,却不知如何下手,经过一番研究,特总结如下: 首先我们需要这样做 1.拷贝出两个js文件:esl.js 和echarts ...
- 博彩游戏(tyvj 1519)
背景 Bob最近迷上了一个博彩游戏…… 描述 这个游戏的规则是这样的:每花一块钱可以得到一个随机数R,花上N块钱就可以得到一个随机序列:有M个序列,如果某个序列是产生的随机序列的子串,那么就中奖了,否 ...
- Solr5.2.1+Zookeeper3.4.9分布式集群搭建
1.选取三台服务器 由于机器比较少,现将zookeeper和solr都部署在以下三台机器上.(以下操作都是在172.16.20.101主节点上进行的哦) 172.16.20.101 主节点 172.1 ...
- 前端开发 CSS中你所不知道的伪类与伪元素的区别--摘抄
做过前端开发的人都熟悉伪类与伪元素,而真正能够彻底了解这二者的区别的人并不多.伪类与伪元素确实很容易混淆. 伪元素主要是用来创建一些不存在原有dom结构树种的元素,例如:用::before和::aft ...
- Git基础篇【转】
转自:https://i.cnblogs.com/EditPosts.aspx?opt=1 1.设置名字与邮箱 $ Git config –global user.name “YourName” $ ...