Swift Timer - 如何阻止UIButton文本重置?

时间:2016-08-10 15:36:31

标签: swift uibutton nstimer

我有一个简单的Swift计时器,从200向下计数到50

计时器在viewDidLoad上设置为200,由一个处理以下两种状态的UIButton控制:

  1. 启动计时器(从200开始减少)
  2. 停止计时器(使计时器无效并暂停)
  3. 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将按钮标签的内容重置为“开始”?

1 个答案:

答案 0 :(得分:1)

我已经解决了这个问题。

这确实与按钮文本的更改方式有关。

self.btnStart.setTitle(String(counter), forState: UIControlState.Normal)

由于

\闭