我试图在我的UITableCells上添加上下投票
这就是我的意思:
每当我点击向上和向下按钮时,它应该立即更新单元格
以下是我填写表格的方式:
我的UITableView中的代码块
...
...
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
return getCellForIndexPath(indexPath)
}
func getCellForIndexPath(indexPath: NSIndexPath) -> TableCell {
let cell = tblView.dequeueReusableCellWithIdentifier("TableCell") as! TableCell
if generalPosts.count != 0 {
let post = generalPosts[indexPath.row]
cell.post.text = post.value["post"] as? String
let test = post.value["time"] as? NSNumber
let time = Double(test!)
cell.time.text = getTimeAgo(time)
cell.votes.text = String(Int((post.value["votes"] as? NSNumber)!))
cell.snapShot = post
}
return cell
}
...
...
这是我的UITableCell
import UIKit
class TableCell: UITableViewCell {
@IBOutlet var userImage: UIImageView!
@IBOutlet var post: UILabel!
@IBOutlet var time: UILabel!
@IBOutlet var votes: UILabel!
@IBOutlet var thumbsUp: UIButton!
@IBOutlet var thumbsDown: UIButton!
var snapShot: FDataSnapshot? = nil
var newValue: Int = 0
override func layoutSubviews() {
newValue = Int(snapShot?.value["votes"] as! NSNumber)
thumbsUp.addTarget(self, action: "upOne:", forControlEvents: .TouchUpInside)
thumbsDown.addTarget(self, action: "downOne:", forControlEvents: .TouchUpInside)
}
@IBAction func upOne(sender: UIButton) {
let ref = snapShot!.ref
newValue = newValue + 1
ref.updateChildValues(["votes": newValue])
}
@IBAction func downOne(sender: UIButton) {
let ref = snapShot!.ref
newValue = newValue - 1
ref.updateChildValues(["votes": newValue])
}
}
向上和向下按钮它们有点工作,但我必须刷新页面才能获得正确的投票数量。如果单击其中一个向上或向下按钮,如何刷新单元格?
答案 0 :(得分:1)
表格不需要重新加载单元格来更新,单元格肯定可以自己处理
在cellForRowAtIndexPath中的,传递整个post
对象,而不仅仅是“投票”中的值
然后在你的一个上下功能中放入
self.votes.text = String(Int((post.value["votes"] as? NSNumber)!))
已提供ref.updateChildValues(["votes": newValue])
已正确更新帖子对象
答案 1 :(得分:1)
在设置新值(如
)后,如何更新单元格的标签votes.text = "\(newValue)"