美文网首页iOS开发代码段iOS开发技术分享iOS学习开发
自定义tableView的cell上添加button按钮获取ce

自定义tableView的cell上添加button按钮获取ce

作者: timeforasong | 来源:发表于2016-07-01 10:50 被阅读893次

    当我们在一个自定义的tableView Cell上添加一个UIButton按钮时,要想点击按钮时获取对应的indexPath,这时发现没有什么好的办法直接拿到而不能实现点击按钮跳转到cell对应的页面。这时不妨试试下面的方法

    cell上面添加button就不必多说了,直接从button的点击事件开始

    - (void)btnAction:(UIButton *)sender{
    
      //1. 将button强转成你自定义cell类(GoodsListCell是我的自定义cell)
        GoodsListCell *cell = (GoodsListCell *)[sender superview];
      //2.使用tableView indexPathForCell来获取对应的indexPath
        NSIndexPath *indexPath = [self.tableView indexPathForCell:cell];
        BuyViewController *buyVC = [[BuyViewController alloc]init];
      //3.获取cell对应的indexPath就可以实现传值了
        buyVC.model = self.dataSource[indexPath.row];
        [self.navigationController pushViewController:buyVC animated:YES];
    }
    

    一个小技巧,在一些类似购物这种App中会用到,希望会帮助到你!!!

    相关文章

      网友评论

      • 86ad34804bc8:你好,有swift版本吗?
      • 7578c6db139a:谢谢楼主分享,我的问题被完美的解决了, :+1:
      • Super_龙:你的方法里面调用了self.tableview 可是button是在自定义cell里的, 所以button的方法也咋里面. 如何要用代理或者block的话按着你这个思路我需要把button, 或者利用button找到的cell传过去, 可是就不对了.
        Super_龙:你的意思是在返回cell的之前给他添加点击方法么? 如果这样的话会不会一直在给添加方法, 虽然不会影响什么, 但是也会一遍一遍的执行. 当然除非你不用注册的方法, 这样判断在cell alloc 的时候添加方法是不会重复的.
        timeforasong:@Super_龙 我这块想复杂了,其实你只要在自定义cell中定义一个button,在tableviewController中可以直接拿到,并给给它添加点击事件就可以了
      • 春泥Fu:也可以用tag值来获取~,比如cell上的按钮,你设置tag值为对应的section*1000 + row,按钮点击事件再反计算出对应的indexPath
        timeforasong:@春泥Fu :smile:
      • 960f88ec9dbf:嗯?拿你cell的模型去模型arr找index不行
        960f88ec9dbf:@timeforasong
        用 block 让控制器去写点击事件
        timeforasong:@loveuqian button点击事件中获取indexPath只能这样,无法直接获取!你可以试试

      本文标题:自定义tableView的cell上添加button按钮获取ce

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