IOS Swift 如何更改 1 个表格 View 单元格

标签 ios swift uitableview

我有一个 tableview,它具有喜欢和不喜欢特定帖子的功能。我的问题是,如果您喜欢某个帖子,它会正确显示,但如果您向下滚动然后向上滚动,它就会忘记。我该如何解决这个问题?

@IBAction func voteAction(_ sender: UIButton)
{
    let stream_id = streamsModel.streamID[sender.tag]
    let profile_id = streamsModel.Profile_ID[sender.tag]
    streamsModel.voteStatusv = streamsModel.VoteStatus[sender.tag]
    streamsModel.Likes = streamsModel.Votes[sender.tag]
    streamsModel.streamIDv = streamsModel.streamID[sender.tag]

    let cellT = getCellForView(view: sender)
    let indexPath = TableSource.indexPath(for: cellT!)

    if (indexPath != nil) {
        let cell = TableSource.cellForRow(at: indexPath!) as! HomeTVC
        if streamsModel.likeStatus == "0"   {
            // Liked
            cell.votes.setTitle(String(streamsModel.Likes+1), for: UIControlState.normal)
            cell.likeImage.setImage(UIImage(named: "like2"), for:  .normal)
        } else {
            // Unliked
            cell.votes.setTitle(String(streamsModel.Likes-1), for: UIControlState.normal)
            cell.likeImage.setImage(UIImage(named: "like"), for:  .normal)
        }
        // This snippet below causes an error
        //TableSource.reloadRows(at: [indexPath!], with: .none)
    }
}

上面的代码只是检查您是否喜欢某些东西 onClick 如果是,它会将计数加 +1 并将图像更改为喜欢。如果您不喜欢某些东西,那么它会在计数器上执行 -1 并将图像更改为默认值。再次一切正常。我唯一的问题是,如果我向下滚动然后返回,它会忘记我喜欢的东西。解决此问题的唯一方法是调用 tableView.reloadData()。但是,这太多了,因为我只更新了 1 个单元格。有什么建议吗?

最佳答案

你还需要更改模型数组中的值,否则当你滚动 tableview 时你会得到旧值。试试这个代码

if (indexPath != nil) {
            let cell = TableSource.cellForRow(at: indexPath!) as! HomeTVC
            if streamsModel.likeStatus == "0"   {
                // Liked
                streamsModel.Likes = streamsModel.Votes[sender.tag] + 1
                cell.votes.setTitle(String(streamsModel.Likes+1), for: UIControlState.normal)
                cell.likeImage.setImage(UIImage(named: "like2"), for:  .normal)
            } else {
                // Unliked
                streamsModel.Likes = streamsModel.Votes[sender.tag] - 1
                cell.votes.setTitle(String(streamsModel.Likes-1), for: UIControlState.normal)
                cell.likeImage.setImage(UIImage(named: "like"), for:  .normal)
            }
            // This snippet below causes an error
            //TableSource.reloadRows(at: [indexPath!], with: .none)
        }

关于IOS Swift 如何更改 1 个表格 View 单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51605390/

相关文章:

ios - UICollection查看图像

ios - 从 uitextview 获取属性字符串

ios - 重新加载 UITableView 导致标签设置不正确

ios - 如何删除 UITableView 上的 "just the selection color"

ios - Xcode (Swift 3.0) - 在侧边栏菜单中切换 Controller 时如何保留值

ios - 如何为标题索引uitableview iOS的对象组成数组?

iphone - iOS根据来电显示通知

ios - 尝试递归调用-save : on the context aborted when saving Core Data viewContext after CloudKit Record Changed

swift - 我可以使用数组更改 socket ,而不是对所有内容进行硬编码吗?

ios - Swift:带有居中按钮的自定义导航栏