랭귀지/SWIFT
swift 타이머 사용하여 1초마다 1씩 증가하기
유키공
2018. 1. 5. 11:30
타이머 사용하여 1초마다 1씩 증가하기
- Timer.scheduledTimer()- Timer.invalidate()
- Timer.isValid
import UIKit class ViewController: UIViewController { //ui @IBOutlet weak var txtTime: UILabel! @IBOutlet weak var btnStart: UIButton! @IBOutlet weak var btnEnd: UIButton! //timer var mTimer : Timer? var number = 0 let interval = 1.0 let timeSelector: Selector = #selector(ViewController.timerCallback) override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view, typically from a nib. } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } /** 타이머 시작버튼 클릭 */ @IBAction func onTimerStart(_ sender: Any) { if let timer = mTimer { //timer 객체가 nil 이 아닌경우에는 invalid 상태에만 시작한다 if !timer.isValid { /** 1초마다 timerCallback함수를 호출하는 타이머 */ mTimer = Timer.scheduledTimer(timeInterval: interval, target: self, selector: timeSelector, userInfo: nil, repeats: true) } }else{ //timer 객체가 nil 인 경우에 객체를 생성하고 타이머를 시작한다 /** 1초마다 timerCallback함수를 호출하는 타이머 */ mTimer = Timer.scheduledTimer(timeInterval: interval, target: self, selector: timeSelector, userInfo: nil, repeats: true) } } /** 타이머 종료버튼 클릭 */ @IBAction func onTimerEnd(_ sender: Any) { if let timer = mTimer { if(timer.isValid){ timer.invalidate() } } number = 0 txtTime.text = String(number) } //타이머가 호출하는 콜백함수 @objc func timerCallback() { txtTime.text = String(number) number = number + 1 } }
결과
타이머 시작 버튼을 클릭하면 숫자가 1씩 증가하며 타이머 종료 버튼을 클릭하면 타이머가 종료되고 숫자는 0이 됩니다.
UI