ios – UITableViewCell(Swift)中的多个计时器

ios – UITableViewCell(Swift)中的多个计时器,第1张

概述我有UITableViewcells,它们是在不同的时刻创建的,我希望它们中的每一个都有一个独立的计时器,在使用reloadData()添加对象时触发 这就是我到目前为止所做的 import UIKitvar timer = Timer()var blinkStatus:Bool! = falsevar time = 300class LiveViewCell: UITableVie 我有UItableVIEwcells,它们是在不同的时刻创建的,我希望它们中的每一个都有一个独立的计时器,在使用reloadData()添加对象时触发

这就是我到目前为止所做的

import UIKitvar timer = Timer()var blinkStatus:Bool! = falsevar time = 300class liveVIEwCell: UItableVIEwCell {    let str = String(format:"%02d:%02d",(time / 60),(time % 100))    func processtimer() {        if time > 0 {            time -= 1            timeRemainingLbl.text = String(time)        } else if time == 0 {            timer.invalIDate()            timeRemainingLbl.text = "Due!"            timer = Timer.scheduledTimer(timeInterval: 0.5,target: self,selector: #selector(liveVIEwCell.blinkTimer),userInfo: nil,repeats: true)        }    }    func blinkTimer() {        if blinkStatus == false {            timeRemainingLbl.textcolor = UIcolor(red:1.00,green:0.00,blue:0.00,Alpha:1.0)            blinkStatus = true        } else if blinkStatus == true {            timeRemainingLbl.textcolor = UIcolor.clear            blinkStatus = false        }    }    @IBOutlet weak var tableNumberleftLabel: UILabel!    @IBOutlet weak var guestNumbersLabel: UILabel!    @IBOutlet weak var timeIntableLabel: UILabel!    @IBOutlet weak var tableNumberLbl: UILabel!    @IBOutlet weak var timeRemainingLbl: UILabel!    var table: table!    func configureliveCell(_ NT: table) {        layer.cornerRadius = 20        timer = Timer.scheduledTimer(timeInterval: 1,selector: #selector(liveVIEwCell.processtimer),repeats: true)        tableNumberLbl.text = "T" + String(NT.number)        timeRemainingLbl.text = String(time)    }}

每当我创建一个新单元格时调用configureliveCell就会出现问题.计时器似乎加速了,我希望每个计时器都是独立的.

解决方法 覆盖prepareForReuse方法.

overrIDe func prepareForReuse() {    super.prepareForReuse()    timer.invalIDate()}

这将在返回单元格以供另一行使用之前调用.通过在此处使计时器无效,您的configureliveCell不会创建另一个计时器.

顺便说一句 – 您还应该添加一个deinit方法并在那里使计时器无效.

您还可以将timer属性设置为可选,并在使其无效后将其设置为nil.当然,您需要添加适当的检查来处理它是可选的.

您必须做的最后一项更改是更改计时器,时间和blinkStatus,以便通过在类中移动它们来实例变量.

总结

以上是内存溢出为你收集整理的ios – UITableViewCell(Swift)中的多个计时器全部内容,希望文章能够帮你解决ios – UITableViewCell(Swift)中的多个计时器所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1051099.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-25
下一篇 2022-05-25

发表评论

登录后才能评论

评论列表(0条)

保存