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

时间:2015-04-18 01:57:56

标签: swift parse-platform tableview tableviewcell cell-formatting

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

      @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页面上的like按钮的文档在Obj-C中,我在Swift中编写了我的应用程序。如果您想查看以下内容,请点击该页面的链接:https://www.parse.com/tutorials/anypic#like。第6.1节。

TD; LR 我不确定如何更新单元格,以便在没有cellForRowAtIndexPath方法的情况下不会重新加载整个tableview。也许自定义方法?也许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)

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

1 个答案:

答案 0 :(得分:0)

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