我创建了一个带有星形图像的按钮,我需要在单击时更改图像。就像点击按钮成为收藏一样,再次单击时删除收藏夹。
这是代码
-(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;
}
答案 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];