Swift - 仅在按下按钮时更新UITableView中的计数标签而不是所有对象

时间:2015-03-30 02:39:01

标签: swift parse-platform uilabel

@IBAction func topButton(sender: UIButton) {

    let hitPoint = sender.convertPoint(CGPointZero, toView: self.tableView)
    let hitIndex = self.tableView.indexPathForRowAtPoint(hitPoint)
    let object = objectAtIndexPath(hitIndex)
    object.incrementKey("count")
    object.saveInBackground()

    self.tableView.reloadData() 

    //I'm not sure how to change this code to update only the label.

    NSLog("Top Index Path \(hitIndex?.row)")
    sender.enabled = false


} 

此代码用于更新Parse上的计数器,然后刷新tableView中的所有数据。我想知道我怎么才能更新标签。该标签与相似按钮位于同一视图上,并被称为" count"没有报价。我想要它,以便当我按下TableViewCell中的计数标签中的数字而不是所有的tableview单元格刷新时。

2 个答案:

答案 0 :(得分:0)

在每个表格视图单元格中,您必须保留对单元格中标签或标记的引用,并了解您的单元格层次结构。
对于UIButton和UILabel,您必须这样做(如果需要,您甚至可以在标签更改中添加动画):

let cell = button.superview.superview.superview
cell.labelName.text = String(count + 1)

否则你也可以这样做,这是更清洁,但不同,你只重新加载更改的行:

self.tableView.beginUpdates()
self.tableView.reloadRowsAtIndexPaths([hitIndex], withRowAnimation:None 
self.tableView.endUpdates()

答案 1 :(得分:0)

因为你在UITableViewCell中有个别按钮,我假设你可能有一个带有Swift类的xib。

class MyCell: UITableViewCell {

    //Linked to the like button in xib
    @IBOutlet weak var likeCountLabel: UILabel!

    var likeCount = 0

    //Linked to the Touch Up Inside event of like button
    @IBAction func likeMe() {

        //As this method is in the cell so you do not have worry about
        //indexPath.
        likeCount++
        likeCountLabel.text = String(likeCount)
    }

    override func prepareForReuse() {
        //
    }
}

重点是您可以将代码移动到自定义UITableViewCell而不是UIViewController。这样你就很容易管理。