Swift 计时器 - 如何阻止 UIButton 文本重置?
Swift Timer - How to stop the UIButton text from resetting?
我有一个简单的 Swift 计时器,可以从 200
倒数到 50
。
计时器在 viewDidLoad
上设置为 200,并由处理以下 2 种状态的单个 UIButton
控制:
- 开始计时(从 200 开始减少)
- 停止计时器(使计时器无效并暂停)
UIButton
有一个预填充文本:"Start",其内容将被当前计数器编号覆盖。
我遇到的问题是,当我再次按下按钮暂停计时器时,UIButton 的文本被重置为预填 "Start"
我希望它在用户准备好之前不重置,方法是按下重置按钮(尚未实现)
我的代码如下;我很快会将其放入自定义 UIButton class;我只是希望按钮标签停止重置为“开始”。
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)
}
}
问题:按下按钮暂停计时器时,按钮标签文本重置为 "Start",而实际上它应该是用户按下暂停计时器的数字。
问题:如何阻止 Swift 将按钮标签的内容重置为 "Start"?
我已经解决了这个问题。
确实与按钮文本的更改方式有关。
self.btnStart.setTitle(String(counter), forState: UIControlState.Normal)
谢谢
\关闭
我有一个简单的 Swift 计时器,可以从 200
倒数到 50
。
计时器在 viewDidLoad
上设置为 200,并由处理以下 2 种状态的单个 UIButton
控制:
- 开始计时(从 200 开始减少)
- 停止计时器(使计时器无效并暂停)
UIButton
有一个预填充文本:"Start",其内容将被当前计数器编号覆盖。
我遇到的问题是,当我再次按下按钮暂停计时器时,UIButton 的文本被重置为预填 "Start"
我希望它在用户准备好之前不重置,方法是按下重置按钮(尚未实现)
我的代码如下;我很快会将其放入自定义 UIButton class;我只是希望按钮标签停止重置为“开始”。
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)
}
}
问题:按下按钮暂停计时器时,按钮标签文本重置为 "Start",而实际上它应该是用户按下暂停计时器的数字。
问题:如何阻止 Swift 将按钮标签的内容重置为 "Start"?
我已经解决了这个问题。
确实与按钮文本的更改方式有关。
self.btnStart.setTitle(String(counter), forState: UIControlState.Normal)
谢谢
\关闭