ios开发获取button背后的cell

作者: 卡卡罗忒 | 来源:发表于2016-11-07 18:12 被阅读681次

    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

    还是最后一种有电水瓶.

    转载请注明作者,谢谢~
    鑫 胖

    相关文章

      网友评论

      • qazws:厉害了,金将军。
      • b22a4c9fbdeb:换个思路. 可以用代理的方式来获得cell. 自定义cell的时候创建协议, table view准守协议. 那么Button可以获得, cell也可以获得
      • 2c8aea30e451:本來還煩惱著button in cell 再提取button rect in super view , 剛看到思路真好:dancer:
        我最初的方法:
        String value : 200013 2是section 13是row
        Intvalue -> To tag
        到需要用的地方:
        Tag -> string value,
        Split :("000")
        卡卡罗忒:@kinGwL 嗯,写分享有人能用到的感觉很好:smile:

      本文标题:ios开发获取button背后的cell

      本文链接:https://www.haomeiwen.com/subject/hemouttx.html