0

我正在创建一个评论应用程序,它在数组中的表格视图中显示许多评论。用户可以喜欢、不喜欢或标记评论。我已将其合并到应用程序中,但是,每当用户单击喜欢、不喜欢或标记时,总是会执行第一条评论。

这是我的 cellForRowAtIndexPath 中的前几行:

NSDictionary *myArray = [commentArray objectAtIndex:indexPath.row];
commentID = [myArray objectForKey:@"ID"];

我尝试将commentID 作为按钮的标签发送,但后来我意识到这是一个包含许多字母的ID,例如7c3769f28c9547f4b6889201a8c13f1e。

任何帮助,将不胜感激。谢谢

4

3 回答 3

2

解决此问题的最简单方法是在indexPath.row创建按钮时将按钮的标记设置为单元格的标记。

然后在您likeButtonPressed:和其他按钮处理程序方法中,您可以使用按钮的标签从正确的索引中获取数据:

-(void)likeButtonPressed:(id)sender
{
    UIButton *button = sender;
    NSDictionary *commentData = commentArray[button.tag];
    // Do what you want with commentData here...
}
于 2013-09-05T11:41:51.927 回答
0

我已经像这样在我的应用程序中实现了相同的概念,创建一个 nsobject 类,在其中声明并实现按钮,在你的类单元格中的行方法这样写,cell =(customCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier] ; cell = [[DetailsRoomsCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier]; cell.buttonRoomType1.tag = indexPath.row; [cell.button1 addTarget:self action:@selector(aMethod1:) forControlEvents:UIControlEventTouchDown]; cell.button2.tag = indexPath.row+1; [cell.buttonRoomType2 addTarget:self action:@selector(aMethod2:) forControlEvents:UIControlEventTouchDown];

这会帮助你。

于 2013-09-05T11:49:04.637 回答
0

您可以使用以下代码:

cellForRowAtIndexPath 代码

btnlike.tag = indexPath.row
[btnlike addTarget:self action:@selector(likeButtonPressed:) forControlEvents:UIControlEventTouchUpInside];

likeButtonPressed 方法

-(IBAction)likeButtonPressed:(id)sender{
NSLog(@"Button tag :%d",[sender tag]);
}
于 2013-09-05T11:51:04.453 回答