通过cell的UIButton获取UITableViewCell的行数及Cell数据

有时候在画cell的时候,里面的控件我会给它设置tag,用来在cellForRowAtIndexPath中获取每个cell的子控件,如果子控件有个UIButton,你给它设置targeta后,在响应的方法里没办法分是从哪一个cell的button触发的,因为所有的cell的那个UIbutton的tag是一样的。

既然不许改变tag,有没有其他办法知道它的父容器Cell的行数呢?知道行数了不会知道是哪一个cell的Button触发的。
方法1:
NSString* cellStr1 = [NSString stringWithFormat:@"%d", indexPath.row];
[btn_attention setTitle:cellStr1 forState:UIControlEventTouchCancel];

获取title,并转为行数:

NSString* cellIndex = [sender titleForState:UIControlEventTouchCancel];
int tag =[cellIndex intValue];


方法2:
 UITableViewCell * cell = (UITableViewCell *)[[sender superview] superview];
   NSIndexPath * path = [self.baseTableView indexPathForCell:cell];
   //获取按钮所在的cell的row
 BnetBillMode = [self.tableArray objectAtIndex:path.row];


方法3:

 [cell.button addTarget:self action:@selector(didTapButton:)   forControlEvents:UIControlEventTouchUpInside];
那么点击button时就会调用
- (void)didTapButton:(UIButton *)sender
      剩下的就是如何通过这个sender获得它所在的cell。我们这么实现这个方法,

- (void)didTapButton:(UIButton *)sender
{
  CGRect buttonRect = sender.frame;
  for (CustomCell *cell in [self.baseTableView visibleCells])
  {
    if (CGRectIntersectsRect(buttonRect, cell.frame))
    {
      //cell就是所要获得的
    }
  }
}

转载于:https://my.oschina.net/u/615517/blog/118522

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值