如何点击自定义cell里自定义的view时获得cell的indexpath
1个回答
2016-08-14 · 做真实的自己 用良心做教育
千锋教育
千锋教育专注HTML5大前端、JavaEE、Python、人工智能、UI&UE、云计算、全栈软件测试、大数据、物联网+嵌入式、Unity游戏开发、网络安全、互联网营销、Go语言等培训教育。
向TA提问
关注
展开全部
在自定义UITableViewCell中创建了一个按钮。
想在点击该按钮时知道该按钮所在的cell在TableView中的行数。就是cell的 indexPath.row
两种方法都很好。
-(IBAction):(id)sender
{
NSLog(@"MyRow:%d",[self.table indexPathForCell:((TableViewCell*)[[sender superview]superview])].row); //这个方便一点点,不用设置tag。
NSLog(@"MyRow:%d",((TableViewCell*)[[sender superview]superview]).tag);
//这个需要加载cell时设置tag.不过也很方便。
}
-(UITableViewCell *)tableView:(UITableView *)tableView
cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
//删除cell.contentView中所有内容,避免以下建立新的重复
int i = [[cell.contentView subviews] count] - 1;
for(;i >= 0 ; i--)
{
[[[cell.contentView subviews] objectAtIndex:i] removeFromSuperview];
}
//添加button
UIButton *but = [UIButton buttonWithType:UIButtonTypeCustom];
[but setBackgroundImage:[UIImage imageNamed:@"delete.png"] forState:UIControlStateNormal];
[but setFrame:CGRectMake(280, 10, 30, 30)];
[but setAlpha:0.8];
[but addTarget:self action:@selector(del:) forControlEvents:UIControlEventTouchUpInside];
[cell.contentView addSubview:but];
//设置Tag为cell 对应的indexPath row
for(id view in subviews)
{
if([view isKindOfClass:[UIButton class]])
{
[view setTag:[indexPath row]];
//[cell.contentView bringSubviewToFront:view];
}
}
}
//Button事件
-(void)del:(id)sender
{
for(UITableViewCell *cell in visiblecells)
{
if(cell.tag == button.tag)
{
//button.tag就是对应的[indexPath.row
}
想在点击该按钮时知道该按钮所在的cell在TableView中的行数。就是cell的 indexPath.row
两种方法都很好。
-(IBAction):(id)sender
{
NSLog(@"MyRow:%d",[self.table indexPathForCell:((TableViewCell*)[[sender superview]superview])].row); //这个方便一点点,不用设置tag。
NSLog(@"MyRow:%d",((TableViewCell*)[[sender superview]superview]).tag);
//这个需要加载cell时设置tag.不过也很方便。
}
-(UITableViewCell *)tableView:(UITableView *)tableView
cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
//删除cell.contentView中所有内容,避免以下建立新的重复
int i = [[cell.contentView subviews] count] - 1;
for(;i >= 0 ; i--)
{
[[[cell.contentView subviews] objectAtIndex:i] removeFromSuperview];
}
//添加button
UIButton *but = [UIButton buttonWithType:UIButtonTypeCustom];
[but setBackgroundImage:[UIImage imageNamed:@"delete.png"] forState:UIControlStateNormal];
[but setFrame:CGRectMake(280, 10, 30, 30)];
[but setAlpha:0.8];
[but addTarget:self action:@selector(del:) forControlEvents:UIControlEventTouchUpInside];
[cell.contentView addSubview:but];
//设置Tag为cell 对应的indexPath row
for(id view in subviews)
{
if([view isKindOfClass:[UIButton class]])
{
[view setTag:[indexPath row]];
//[cell.contentView bringSubviewToFront:view];
}
}
}
//Button事件
-(void)del:(id)sender
{
for(UITableViewCell *cell in visiblecells)
{
if(cell.tag == button.tag)
{
//button.tag就是对应的[indexPath.row
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询