UITableView 的单元格中的 iOS Swift Like 按钮

Posted

技术标签:

【中文标题】UITableView 的单元格中的 iOS Swift Like 按钮【英文标题】:iOS Swift Like Button in UITableView 's Cell 【发布时间】:2016-10-13 13:12:46 【问题描述】:

我的应用中有一个tableView。在我的应用程序中,用户可以喜欢一个帖子(最好的例子是 instagram)。当我喜欢一个帖子时,我的按钮状态会变为活动状态并且按钮的颜色会发生变化。但是当我滚动 tableView 按钮状态恢复正常时。我知道它会发生,因为单元格再次重新加载,但是这个问题的最佳解决方案是什么?我是否必须加班才能按下按钮应用程序发送请求和tableview reloadData? (这对服务器不好)

编辑:我有一个按钮标志,但是当我按下喜欢按钮时,我必须再次发送请求并获取 dataArray。但是如何更改按钮状态并发送类似请求但不获取 dataArray。当用户手动刷新数据时会发生。

谢谢。

【问题讨论】:

你要发送什么请求,为什么要获取dataArray?什么是dataArray? 你在使用 Firebase 吗? @FredericP 喜欢请求给我发回一个用户喜欢或不喜欢帖子的真假 @TarvoMäesepp 不,我使用 Alamofire 【参考方案1】:

您可以使用 if 和 else 条件进行设置。看下面的例子

if model.data.isFav == true

    btnFav.selected = true

else

    btnFav.selected = false

【讨论】:

但是当我按下时我必须再次发送请求并获取 dataArray。但是如何更改按钮状态并发送类似请求但不获取 dataArray。当用户手动刷新数据时会发生。 简单的逻辑。您可以在成功响应中调用 api 更改按钮的状态。 但我不想每次按like按钮时tableView reloadData 仅重新加载按下按钮的那一行。不要重新加载整个表 您可以使用 indexPath self.tableview.reloadSections(NSIndexSet(index: 0), withRowAnimation: UITableViewRowAnimation.Fade) 重新加载特定单元格【参考方案2】:

如果您的 dataArray 中有任何带有 Posts 的按钮标志,您可以从中加载单元格数据,那么您可以使用该标志来设置按钮的颜色。滚动时会小心的。

【讨论】:

是的,我有一个按钮标志,但是当我按下时,我必须再次发送请求并获取 dataArray。但是如何更改按钮状态并发送类似请求但不获取 dataArray。当用户手动刷新数据时会发生。【参考方案3】:

在导航检查器中将按钮类型设置为自定义,然后将背景图像设置为默认并选中。然后使用下面的代码:

//    MARK: Set fav button Action
    func setFavButtonAction(_ sender : UIButton) 
        print(sender.tag)
        if sender.isSelected == true 
            sender.isSelected = false
        else
            sender.isSelected = true
        
    

【讨论】:

以上是关于UITableView 的单元格中的 iOS Swift Like 按钮的主要内容,如果未能解决你的问题,请参考以下文章

在 UITableView 的单元格中下载图像的最佳实践? iOS/斯威夫特

UITableView 自定义单元格更改值 iOS 9

数据未显示在 UITableView 的自定义单元格中

iOS Swift:在自定义 UITableView 单元格中更新二维数组时获取重复值

每个 UICollectionView 单元格中的 UITableView

UITableView 单元格中的 UIButton,例如“删除事件”