랭귀지/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