【发布时间】:2018-08-26 00:34:14
【问题描述】:
我正在使用 Swift 4,我终于让我的 TableView 单元工作正常。我有一个点赞按钮,当用户点击它时,我只更新被点击的单元格并显示一个新图像 like 或 unliked,此外我还显示一个 LikeCounter + 1 表示喜欢,-1 表示不一样。一切正常。
我的问题是如何做到这一点,以便我只在单击按钮时更新这两个元素?
现在它会更新 Table View Cell 。这是我的代码
@IBAction func voteAction(_ sender: UIButton)
{
if let indexPathm = TableView.indexPathForView(sender) {
if streamsModel.VoteStatus[sender.tag] == "0" {
streamsModel.VoteStatus[sender.tag] = "1"
streamsModel.Votes[sender.tag] = streamsModel.Votes[sender.tag] + 1
} else {
streamsModel.VoteStatus[sender.tag] = "0"
streamsModel.Votes[sender.tag] = streamsModel.Votes[sender.tag] - 1
}
TableView.reloadRows(at: [indexPathm],with: .none)
}
}
一旦你点击那个按钮,它就会出现在这里
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "HomeTVC", for: indexPath) as! HomeTVC
cell.vote_status = streamsModel.VoteStatus[indexPath.row]
if streamsModel.VoteStatus[indexPath.row] != "0" {
cell.voteImage.setImage(UIImage(named: "liked"), for: .normal)
} else {
cell.voteImage.setImage(UIImage(named: "unliked"), for: .normal) }
}
我在 TableViewCell 中有更多单元格元素,但我只想更新和隔离我的 TableViewCell 中的特定代码。
我尝试过使用这种方法Update label in custom UITableView Cell 进行操作,但是我发现如果我向下滚动然后备份它会恢复我所做的任何更改。
// This works however if you scroll down then back up
// it reverts back to the original status
let button = sender as! UIButton
let view = button.superview!
let cell = view.superview as! HomeTVC
let indexPath = tableView.indexPathForCell(cell)
println(indexPath)
if(indexPath != nil){
if streamsModel.VoteStatus[indexPath.row] != "0" {
cell.voteImage.setImage(UIImage(named: "liked"), for: .normal)
} else {
cell.voteImage.setImage(UIImage(named: "unliked"), for: .normal) }
}
}
所以现在我正在打电话,但它正在更新整个单元格。
TableView.reloadRows(at: [indexPathm],with: .none)
【问题讨论】:
-
我认为没有办法做到这一点,你只能reloadCell
-
我想你错过了 add cell.button.tag = indexPath.row in table view cellForRowAt 方法。
标签: swift uitableview swift4