0

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

细胞

有一些按钮,如 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。我想要一个在特定索引上的对象。

谢谢

4

3 回答 3

0

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

就像是:

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

当您调用委托方法时,请这样做

[delegate commentForCell:self];

然后当你实现委托方法时

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

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

于 2013-10-23T05:38:43.770 回答
0

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

customcell.row = indexpath.row.

在协议中使用这一行

 [delegate like:row]
于 2013-10-23T05:39:33.133 回答
0

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

CGPoint touchPoint = [sender convertPoint:CGPointZero toView:self.tableView]; 
NSIndexPath *hitIndex = [self.tableView indexPathForRowAtPoint:touchPoint];
于 2013-10-23T05:41:22.257 回答