当用户点击tableView单元格内的按钮时,我希望它能够更改单元格的多个属性。我将indexPath.row值指定为不同类中每个单元格的标记值。这是我的代码:
@IBAction func upvote(sender: AnyObject) {
let row = sender.tag
let indexPath = NSIndexPath(forRom: row, in Section: 0)
let cell = tableView.cellForRowAtIndexPath(indexPath) as FeedPageTableViewCell
cell.upVote.setImage("green", forState: .Normal)
}
问题在于,虽然它可以在我点击的单元格上运行,但它也适用于每行5行以下的每个单元格。
答案 0 :(得分:1)
通过从UITableViewCell
那样检索UITableView
来更新let cell = tableView.cellForRowAtIndexPath(indexPath) as FeedPageTableViewCell
cell.upVote.setImage("green", forState: .Normal)
是不合适的。我不认为这符合你的期望:
upvote
相反,您应该拥有一些您保持最新的实例数据数组。在这种情况下,您可能有一个布尔数组,其中索引是行,值是否是" upvoted"。然后在{{1}}函数中,您将更新布尔值并重新加载表/单元格以呈现相应的数据。
答案 1 :(得分:0)
将目标添加到UIButton,使用此方法执行按钮
上的操作-(void)handeltap:(UIButton*)sender{
CGPoint buttonPosition = [sender convertPoint:CGPointZero toView:self.tableView];
NSIndexPath *indexPath = [self.tableView indexPathForRowAtPoint:buttonPosition];
NSUInteger lastIndex = [indexPath indexAtPosition:[indexPath length] - 1];
}
在lastIndex上会给出正确的索引路径,请尝试,如果没有,请告诉我。