在 PFTableViewCell 中重新加载单行 - 返回 PFTableViewCell 没有 cellForRowMethod

Posted

技术标签:

【中文标题】在 PFTableViewCell 中重新加载单行 - 返回 PFTableViewCell 没有 cellForRowMethod【英文标题】:Reloading single row in PFTableViewCell - Returns that PFTableViewCell does not have cellForRowMethod 【发布时间】:2015-04-18 01:57:55 【问题描述】:

好的,所以我一直在尝试为我正在开发的应用程序制作一个赞按钮,并且我正在使用 parse 作为后端。到目前为止,我可以更新解析中的like按钮,但是,我只能重新加载整个表格视图,而不仅仅是单个单元格。重新加载整个表格视图有时会导致表格视图向上或向下移动我相信是因为不同大小的单元格。

      @IBAction func topButton(sender: UIButton) 
    let uuid = UIDevice.currentDevice().identifierForVendor.UUIDString
    let hitPoint = sender.convertPoint(CGPointZero, toView: self.tableView)
    let hitIndex = self.tableView.indexPathForRowAtPoint(hitPoint)
    let object = objectAtIndexPath(hitIndex)

    let cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: hitIndex!) as TableViewCell
    //var indexOfCell:NSIndexPath

    //indexOfCell = hitIndex!
    if object.valueForKey("likedBy") != nil 

        var UUIDarray = object.valueForKey("likedBy")? as NSArray
        var uuidArray:[String] = UUIDarray as [String]

        if !isStringPresentInArray(uuidArray, str: uuid) 

            object.addObject(uuid, forKey: "likedBy")
            object.incrementKey("count")
            object.saveInBackground()                
            //self.tableView.reloadData()
        
    

我已经用正确的 indexPath 尝试了 cellForRow,它总是返回 PFTableViewCell 不包含 cellForRowAtIndexPath 方法。我在论坛上读到有人能够创建自定义方法来重新加载单元格,并且 Parse 的文档使用 PAPCache 来执行类似按钮。幸运的是,Parse 页面上类似按钮的文档位于 Obj-C 中,并且我已经用 Swift 编写了我的应用程序。如果您想查看,这里是该页面的链接:https://www.parse.com/tutorials/anypic#like。第 6.1 节。

TD;LR 我不确定如何更新单元格,以便在没有 cellForRowAtIndexPath 方法的情况下不会重新加载整个表格视图。也许自定义方法?也许是 PAPCache 方法?

已解决

  if object.valueForKey("likedBy") != nil 
        var UUIDarray = object.valueForKey("likedBy")? as NSArray
        var uuidArray:[String] = UUIDarray as [String]
        if !isStringPresentInArray(uuidArray, str: uuid) 
            object.addObject(uuid, forKey: "likedBy")
            object.incrementKey("count")
            object.saveInBackground()
            let count = object.valueForKey("count") as Int?
            //cell.count.text = "\(count)"
            self.tableView.reloadRowsAtIndexPaths([hitIndex!], withRowAnimation: UITableViewRowAnimation.None)

这只会正确地重新加载单元格,但是,现在我的整个表格视图总是滚动到不理想的顶部。

【问题讨论】:

【参考方案1】:

我不明白你想用 UUID 做什么; hitpoint ;hitIndex,我不明白你想让你的应用做什么,而且我没有解析的经验?我会评论你的问题,但我需要 50 个代表才能做到这一点。对不起,这不是一个答案,而是一个问题。如果你指的是 cellForRowAtIndexPath,你需要一个 UITableView 而不是一个单元格。

【讨论】:

实际上我使用 cellForRow 解决了这个问题,我只需要将 indexPath 正确放入一个数组并使其成为可选的,这样它就成功了。现在虽然按下like按钮时整个tableview会继续向上滚动。 ;(

以上是关于在 PFTableViewCell 中重新加载单行 - 返回 PFTableViewCell 没有 cellForRowMethod的主要内容,如果未能解决你的问题,请参考以下文章

解析 iOS SDK:PFTableViewCell 内的 UIButton segue [关闭]

PFTableViewCell 不改变 labelText

如何将图像添加到 PFTableViewCell Swift 2 Xcode 7

PFTableViewCell imageView 为 Nil(使用情节提要)

spring boot 删除一行,然后显示/重新加载同一页面(没有该行)

更漂亮的将 if / else 重新格式化为单行