这就是我到目前为止所做的
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)中的多个计时器所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)