只设置一次UITableViewCell内容?

时间:2015-04-30 07:10:53

标签: ios uitableview swift timer cells

我正在使用MZTimerLabel库在UITableView中的每个单元格上显示倒数计时器。我在函数func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell中设置了每个单元格的单元格内容和倒计时时间。但是,如果我这样做,我意识到如果我滚动浏览UITableView,那么当我向上滚动以查看之前未显示的单元格时,视图无法显示的单元格会再次设置倒数计时器。这是不好的,因为计时器值在它离开视图之前显示的内容与在视图中返回时当前显示的内容之间不断变化。有没有办法只为每个UITableViewCell设置一次倒数计时器?我已经看了这个链接寻求帮助:UITableView :cellForRowAtIndexPath Continues being called但我不确定是否还有其他办法。如果有帮助,这是我的代码。任何帮助将不胜感激!

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    return offerCellAtIndexPath(indexPath)
}


func offerCellAtIndexPath(indexPath: NSIndexPath) -> OfferCell{
    //Dequeue a "reusable" cell
    let cell = tableView.dequeueReusableCellWithIdentifier(offerCellIdentifier) as! OfferCell
    setCellContents(cell, indexPath: indexPath)
    return cell
}

func setCellContents(cell:OfferCell, indexPath: NSIndexPath!){
    let item = self.offers[indexPath.row]
    var expirDate: NSTimeInterval = item.dateExpired()!.doubleValue

    //Get current time and subtract it by the predicted expiration date of the cell. Subtract them to get the countdown timer.
    var currentDate = NSDate().timeIntervalSince1970
    var timer = MZTimerLabel(label: cell.timeLeft, andTimerType: MZTimerLabelTypeTimer)
    timer.delegate = self
    var countdownTime = expirDate - currentDate
    timer.setCountDownTime(countdownTime)
    timer.start()
}

0 个答案:

没有答案