私は200
から50
までカウントダウンする単純なスウィフトタイマーを持っています。スウィフトタイマー - UIButtonテキストのリセットを停止するにはどうすればいいですか?
タイマーはviewDidLoad
に200に設定され、次の2つの状態を処理する単一UIButton
によって制御される。
- スタートタイマー(200から還元開始)
- 停止タイマ(タイマおよび休止を無効「スタート」、現在のカウンタ番号で上書きされます内容は:それは)
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がボタンラベルの内容を「開始」にリセットしないようにするにはどうすればよいですか?
休館
self.btnStart.setTitle(String(counter), forState: UIControlState.Normal)
おかげ
\私は、問題は 'self.btnStart.titleLabel?の.text =文字列(カウンタ)'間違っていると 'self.btnStartでなければならないことだと思います。 setTitle(文字列(カウンタ)、forState:UIControlState.Normal) ' – zardon