如何在Custom Cell按钮中检测indexPath.row单击?

时间:2013-10-23 05:30:51

标签: ios uitableview

我有一个自定义单元格。像这样

Cell

有像LIKE,COMMENT,SHARE这样的按钮。

单击这些按钮时,我想在方法中使用indexPath.row。

我做了这样的协议

@protocol Cell_StreamCellDelegate
@required

-(void)like;
-(void)comment;
-(void)share;


@end

我在CELL.m中的方法时调用它们,如下所示

-(IBAction)likePressed:(id)sender{
    [delegate like];
}
-(IBAction)commentPressed:(id)sender{
    [delegate comment];
}
-(IBAction)sharePressed:(id)sender{
    [delegate share];
}

但是我无法获取indexPath.row。我想得到一个特定索引的对象。

由于

3 个答案:

答案 0 :(得分:0)

在您的委托方法中,您可以发送调用方法的单元格(即self

类似的东西:

- (void)commentForCell:(UITableViewCell *)cell;

当您调用委托方法时,请执行

[delegate commentForCell:self];

然后实现委托方法

- (void)commentForCell:(UITableViewCell *)cell
{
    NSIndexPath *path = [self.tableView indexPathForCell:cell];
    ...
}

在委托方法中使用调用者作为参数是很常见的,正如您可以在任何标准SDK协议(集合视图,表视图,警报视图......)中看到的那样。

答案 1 :(得分:0)

将新的整数属性声明为自定义单元子类中的行,然后在cellForRowAtIndex方法中将其值指定为indexpath.row。

customcell.row = indexpath.row.

在协议中使用此行

 [delegate like:row]

答案 2 :(得分:0)

尝试这个简单的,只需转换touched points into the cell Index

CGPoint touchPoint = [sender convertPoint:CGPointZero toView:self.tableView]; 
NSIndexPath *hitIndex = [self.tableView indexPathForRowAtPoint:touchPoint];