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。方法willDisplayCellcell 参数中传递受影响的单元格。 【参考方案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 重叠图像中的自定义按钮

自定义 UITableViewCell 不会在 setNeedsDisplay 上重绘

如何从 UITableViewCell 中的自定义 UIButton 中删除触摸延迟

使用 UIButton 自定义 UITableViewCell:无法更改 UIImage

自定义 UITableViewCell 和调整单元格高度

更改自定义单元格中按钮的图像