我有一个简单的Swift计时器,从200
向下计数到50
。
计时器在viewDidLoad
上设置为200,由一个处理以下两种状态的UIButton
控制:
UIButton
有一个预填充文本:“开始”,其内容被当前的计数器编号覆盖。
我遇到的问题是,当我再次按下按钮暂停计时器时,UIButton的文本会重置为预先填写的“开始”
我希望在用户准备好之前不要重置,方法是按下重置按钮(尚未实现)
我的代码如下;我很快就会把它放到一个自定义的UIButton类中;我只是希望按钮标签停止重置为开始。
let clockStartTime: Int = 200
enum ClockState {
case Started
case Stopped
}
class ViewController: UIViewController {
var timer: NSTimer = NSTimer()
var counter: Int = clockStartTime
var clockState: ClockState = .Stopped
@IBOutlet weak var btnStart: UIButton!
override func viewDidLoad() {
super.viewDidLoad()
updateButtonTitle()
}
@IBAction func btnStartPressed(sender: AnyObject) {
if self.clockState == .Stopped
{
self.clockState = .Started
let timeIncrement:NSTimeInterval = 0.5
let repeating:Bool = true
timer = NSTimer.scheduledTimerWithTimeInterval(timeIncrement, target:self, selector: #selector(self.updateCounter), userInfo: nil, repeats: repeating)
}
else {
self.clockState = .Stopped
timer.invalidate()
}
}
func updateCounter() {
if counter > 50
{
counter -= 1
}
else {
counter = 0
timer.invalidate()
}
updateButtonTitle()
}
func updateButtonTitle()
{
self.btnStart.titleLabel?.text = String(counter)
}
}
问题:当按下按钮暂停计时器时,按钮标签文本将重置为“开始”,此时应该是用户按下以暂停计时器的数字。
问题:如何阻止Swift将按钮标签的内容重置为“开始”?
答案 0 :(得分:1)
我已经解决了这个问题。
这确实与按钮文本的更改方式有关。
self.btnStart.setTitle(String(counter), forState: UIControlState.Normal)
由于
\闭