我有一个自定义单元格。像这样
有像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。我想得到一个特定索引的对象。
由于
答案 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];