如何在 cellforrowatindexpath 之后更新自定义表格单元格中的 UIButton 图像?

Posted

技术标签:

【中文标题】如何在 cellforrowatindexpath 之后更新自定义表格单元格中的 UIButton 图像?【英文标题】:How do I update UIButton image in custom table cell after cellforrowatindexpath? 【发布时间】:2013-07-23 00:57:56 【问题描述】:

我的表格视图中有一个按钮,点击后应该会更改。

在我的 cellforrowatindexpath 中,我有

 [cell.graphicButton addTarget:self action:@selector(changeGraphic:)forControlEvents:UIControlEventTouchUpInside];

应该调用changeGraphic(改变图形)。调用成功,但是在changeGraphic中图片没有变化。

- (IBAction)changeGraphic:sender



    buttonState++;
// button state is an int, im not using BOOl because I have more than 2 images to change from, but for this question i only included 2
    if(buttonState == 2)
        buttonState = 0;
    
    // 1 = travel time 2 =activity time 3 = total time
    if (buttonState == 0) 



         [cell.vicinitimeGraphicButton setBackgroundImage:[UIImage imageNamed:@"travelDistanceGraphicGreen.png"] forState:UIControlStateNormal];
    

    if (buttonState == 1) 


         [cell.vicinitimeGraphicButton setBackgroundImage:[UIImage imageNamed:@"activityTimeGraphicGreen.png" ] forState:UIControlStateNormal];
    

[self.tableView beginUpdates];
[self.tableView reloadData];
[self.tableView endUpdates];

当我在 changeGraphic 方法中记录内容时,它返回正常。我是否正确更新了 UIButton 的图像?

【问题讨论】:

图片名称是否正确? 图片名称是正确的,但是您的评论使我探索了实际图片的背后。我发现它应该是 '[cell.vicinitimeGraphicButton setImage:[UIImage imageNamed:@"travelDistanceGraphicGreen.png"] forState:UIControlStateNormal];'而不是 setBackgroundImage。以前,图像是在原始图像后面创建的。谢谢我猜 哇,我猜对了! 是的!有时即使是最简单的 cmets 也会有所帮助。我还碰巧创建了我切换到宽 2 像素的图像,所以我可以看出它是作为背景创建的。大声笑什么运气 【参考方案1】:

应该是

[cell.vicinitimeGraphicButton setImage:[UIImage imageNamed:@"travelDistanceGraphicGreen.png"] forState:UIControlStateNormal];

而不是

[cell.vicinitimeGraphicButton setBackgroundImage:[UIImage imageNamed:@"travelDistanceGraphicGreen.png"] forState:UIControlStateNormal];

在我的例子中,图像被创建为背景

【讨论】:

以上是关于如何在 cellforrowatindexpath 之后更新自定义表格单元格中的 UIButton 图像?的主要内容,如果未能解决你的问题,请参考以下文章

NSFetchedResultsController - 如何在 cellForRowAtIndexPath 中显示正确的部分行

如何在没有 cellForRowAtIndexPath 的 UIView 中填充 UITableView

如何交替调用 numberOfRowsInSection 和 cellForRowAtIndexPath

如何在 A Button 中设置 (TableView cellForRowAtIndexpath) 活动?

如何管理 tableViewIndexSearch 的 cellForRowAtIndexPath?

cellForRowAtIndexPath 是如何工作的?