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/斯威夫特
iOS Swift:在自定义 UITableView 单元格中更新二维数组时获取重复值