我需要制作一个喜欢的按钮并在点击时更改图像

时间:2014-11-04 14:15:31

标签: objective-c xcode ios7

我创建了一个带有星形图像的按钮,我需要在单击时更改图像。就像点击按钮成为收藏一样,再次单击时删除收藏夹。

这是代码

 -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell"];


if (cell == nil)
{
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault
                                  reuseIdentifier:@"Cell"];

}
favButton = [UIButton buttonWithType:UIButtonTypeCustom];
[favButton addTarget:self action:@selector(buttonClicked:)   forControlEvents:UIControlEventTouchUpInside];
[favButton setBackgroundImage:[UIImage imageNamed:@"stardes.png"] forState:UIControlStateNormal];
favButton.frame = CGRectMake(200, 90, 20, 25);
[cell.contentView addSubview:favButton];

return cell;
}

1 个答案:

答案 0 :(得分:0)

你必须将状态存储在某个地方。它通常存储在indexPath索引的数组(yourdataset)中,我注意到你不能使用它。除了在单击时更改图像,您还需要在数组中设置状态。 在buttonClicked方法中,迭代superView,直到到达单击按钮的UITableViewCell,找到表中的位置。现在,您要更改数组中的数据索引。

之后,只需在设置背景图像之前检查状态。像这样:

MyData* dta = self.myData[ indexPath.row ];
if (dta.favorite)
    [favButton setBackgroundImage:[UIImage imageNamed:@"stardes.png"] forState:UIControlStateNormal];
else
    [favButton setBackgroundImage:[UIImage imageNamed:@"stardes2.png"] forState:UIControlStateNormal];