아미(아름다운미소)

swift 타이머 사용하여 1초마다 1씩 증가하기 본문

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

UI

 





'랭귀지 > SWIFT' 카테고리의 다른 글

SWIFT 클로저  (0) 2018.01.08
swift 피커 뷰 앱 만들기  (0) 2018.01.07
날짜와 시간 다루기 (Swift)  (0) 2018.01.03
XCode 단축키 정리  (0) 2017.12.27
[문법요약] 옵셔널 체이닝(Optional Chaining)  (0) 2017.12.14
Comments