私は基本的なタイマーを作るためにスイフト3でXcodeを使用しています。毎年ラベルを更新するビューコントローラにタイマーラベルが接続されています。より長い時間のタイミングをとると、秒はより早く実行されます(GIFを参照)。Swift3 scheduled時間が長すぎると時間がかかりすぎて
誰かが私が間違ってやっていることを説明することができますか、私は何をしてはいけません(間違ったアプローチ、より良い機能)?これは何が起こるかである
@IBAction func startButtonTabbed(_ sender: UIButton) {
if (sender == startButton) {
let now = Date()
let formatter = DateFormatter()
formatter.dateFormat = "yyyy-MM-dd HH:mm:ss"
start_time = formatter.string(from:now)
timer = Timer.scheduledTimer(timeInterval: 1, target: self, selector: #selector(ViewController.timerAction), userInfo: nil, repeats: true)
} else {
timer.invalidate()
}
}
func timerAction() {
time += 1;
updateTimingLabel(seconds: time)
}
func updateTimingLabel(seconds: Int) {
self.timerLabel.text = stringFromTimeInterval(interval: TimeInterval(time)) as String
}
func stringFromTimeInterval(interval: TimeInterval) -> NSString {
let ti = NSInteger(interval)
let seconds = ti % 60
let minutes = (ti/60) % 60
let hours = (ti/3600)
return NSString(format: "%0.2d:%0.2d:%0.2d",hours,minutes,seconds)
}
:
@Ivan Skrobotからの回答が正しいです。私はここであなたのコードをコピーしてテストプロジェクトに貼り付け、ボタンで2回タップする動作を再現することができました。一度タップすると正しくカウントされます。そして、あなたがボタンをタップするだけで、それはより速くて速くなります。 – GIJOW