user2230971 user2230971 - 3 months ago 13
iOS Question

How to get the indexPath of a UIButton in a UITableViewCell?

I have a

UITableview
with multiple cells. On each cell I'm adding buttons dynamically according to some array count. So, when I click on a button I'm able to get the
tag
value of the button. But how to get the
indexPath
of that cell?

Here is my code in
-cellForRowAtIndexPath
:

UIView *view=(UIView*)[cell.contentView viewWithTag:indexPath.row+444];

UIImageView *img=(UIImageView*)[cell.contentView viewWithTag:indexPath.row+999];
img.image=[UIImage imageNamed:@"BHCS_empty.png"];

if(integer!=50)
{
NSInteger y_axis=0;
NSArray *Arr=[tableSubCategoryArr objectAtIndex:indexPath.row];
img.image=[UIImage imageNamed:@"BHCS_selected.png"];

view.Frame= CGRectMake(0,50,281, integer-50);
for (int i=0; i<[Arr count]; i++)
{
NSLog(@"arr %@",[Arr objectAtIndex:i]);
UIButton *Btn=[UIButton buttonWithType: UIButtonTypeCustom];
Btn.frame=CGRectMake(0, y_axis, 281, 44);
[Btn setImage:[UIImage imageNamed:@"BHCS_panel.png"] forState:UIControlStateNormal];
[Btn addTarget:self action:@selector(subCategoryBtnClicked:) forControlEvents:UIControlEventTouchUpInside];
[Btn setTag:i+100];
[view addSubview:Btn];


UILabel *nameLbl=[[UILabel alloc]initWithFrame:CGRectMake(20, y_axis,248, 44)];
nameLbl.text = [[Arr objectAtIndex:i]objectForKey:@"SubCategoryName"];
nameLbl.textColor = [UIColor whiteColor];
nameLbl.backgroundColor=[UIColor clearColor];
panelTableView.separatorColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"BHCS_panel_div1.png"]];
nameLbl.font = [UIFont fontWithName:@"Helvetica" size:12.0f];
[view addSubview:nameLbl];

y_axis=y_axis+44+1.3f;
}
}

Answer

Thanks to all i slove this by using below code

     NSIndexPath *indexPath = [panelTableView indexPathForCell:(UITableViewCell *)sender.superview.superview];

NSLog(@"%d",indexPath.row);