UITableViewCell 自定义按钮图像未在 Swift 3 中更新
Posted
技术标签:
【中文标题】UITableViewCell 自定义按钮图像未在 Swift 3 中更新【英文标题】:UITableViewCell custom button image not updating in Swift 3 【发布时间】:2017-05-24 10:44:01 【问题描述】:我的单元格中有三个按钮链接、分享和收藏。我已经在我的自定义单元类中手动设置了图像。在 tableview 委托的 willDisplay 方法中,我希望在用户点击它后更新收藏夹图像。该服务在后端运行良好,并且正在从收藏夹中添加/删除对象,但图像没有更新。我尝试设置背景图像而不是图像,并且还部署了为 Objective-C 规定的各种技术,但在我的情况下似乎没有任何锻炼。最初我在 DealsFullTableViewCell 中将图像设置为相同
这将显示代码 sn -p 我在说
if (self.dealArray[indexPath.row].imageUrl.characters.count > 0)
let cell = tableView.dequeueReusableCell(withIdentifier: "DealsFullTableViewCell", for: indexPath) as! DealsFullTableViewCell
if DataBaseReadServices().getFavourtiesforItemId(self.dealArray[indexPath.row].dealId) == nil
cell.favouritesButton.setImage(UIImage(named: "Favourites Blue Outline 20x20"), for: .selected)
else
cell.favouritesButton.setImage(UIImage(named: "Favourite Icon Blue 20x20"), for: .selected)
print ("=============")
我将 DealsFullTableViewCell 中的图片初始化为
let favouritesButtonImage = UIImage.fontAwesomeIcon(name: .starEmpty, textColor: Constants.AppColours().primaryColour, size: CGSize(width: 20, height: 20), backgroundColor: UIColor.clear)
self.favouritesButton.setImage(favouritesButtonImage, for: .normal)
【问题讨论】:
你应该有一些来自后端的标记用于选择/未选择。然后您可以在点击 favbutton 后重新加载表格。 (后端更改完成后) 这段代码属于哪个方法? @DimpleShah 数据库服务已经告诉我要显示哪个图像但它没有更新它 @vadian 这属于 uitableviewdelegate 的 willdisplay 方法,当单元格已经显示在我为 tableview 制作插座的类中并且图像在单元格 DealsFullTableViewCell 的自定义类中初始化时 永远不会在cellForRowAtIndexPath
之外打电话给dequeueReusableCell
。方法willDisplayCell
在cell
参数中传递受影响的单元格。
【参考方案1】:
请检查下面的答案,如果它不起作用,请更换线程。
if(DataBaseReadServices().getFavourtiesforItemId(self.dealArray[indexPath.row].dealId) == nil)
cell.favouritesButton.setImage(UIImage(named: "Favourites Blue Outline 20x20"), for: .selected)
else
cell.favouritesButton.setImage(UIImage(named: "Favourite Icon Blue 20x20"), for: .normal)
print ("=============")
`
如果上面的代码不起作用,请更改线程。
DispatchQueue.main.async
//your code
谢谢
【讨论】:
以上是关于UITableViewCell 自定义按钮图像未在 Swift 3 中更新的主要内容,如果未能解决你的问题,请参考以下文章
自定义 UITableViewCell 不会在 setNeedsDisplay 上重绘
如何从 UITableViewCell 中的自定义 UIButton 中删除触摸延迟