ios 获取最后一个cell_ios开发获取button背后的cell

ios的tableView是平时开发中用到的最常用的控件之一,通过自定义cell我们可以实现各种各样的效果.在上面添加各种我们想要的控件.这次就讲述如何获点击cell上的button从而获取到后面的cell.

方法一

在创建cell的时候给button以tag值,tag值就是indexpath.row,用的时候直接用button.tag来取cell,但是此方法不适合多个section的tableview;

方法二

通过superView 在button的点击事件中一直用superView来获取button的父视图,此种方法太low,并且容易出错.

方法三 主要说这个

如果以上两种不能满足你(看到这,基本上是不能满足了),那么这种方法一定适合你,先来看实现代码

//首先为button添加点击事件

[button addTarget:self action:@selector(buttonAction:event) forControlEvents:(UIControlEventTouchUpInside)];

//这里要传两个参数,后面解释第二个参数

-(void)buttonAction:(UIButton*)sender event:(id)event

{

NSSet *touches =[event allTouches];

UITouch *touch =[touches anyObject];

CGPoint Position = [touch locationInView:self.tableview];

NSIndexPath *indexPath= [self.tableview indexPathForRowAtPoint:Position];

if (indexPath!= nil) {

//这个indexpath就是button后面cell的indexpath

}

}

先看给button添加点击事件的方法,那里传的参数是不能够自定义,第一个都是button本身都知道,那么如果再传两个参数会是什么?

做了个测试,如下图

测试.png

可以看到,我穿了三个参数,在控制台输出的时候第一个是UIButton,第二个和第三个都是UITouchesEvent,也就是说第二个参数以后都是UITouchesEvent,这个touchesEvent可以说是个UITouch的集合,里面的数量取决于是几个手指点击的,我用两个手指点击,效果如下.

两个手指点击控制台输出

NSSet *touches =[event allTouches];

UITouch *touch =[touches anyObject];

CGPoint currentTouchPosition = [touch locationInView:self.tableview];

现在整体思路就很清晰了,通过第二个参数,拿到触摸事件,通过他来确定点击的位置在tableView中的坐标系,最后用indexPathForRowAtPoint这个方法来取到indexpath

还是最后一种有电水瓶.

转载请注明作者,谢谢~

鑫 胖

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值