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

- Timer.scheduledTimer()

- Timer.invalidate()

- Timer.isValid



ViewController.swift)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
import UIKit
 
class ViewController: UIViewController {
 
    //ui
    @IBOutlet weak var btnStart: UIButton!
    @IBOutlet weak var btnEnd: UIButton!
    @IBOutlet weak var txtTime: UILabel!
    
    //timer
    var mTimer : Timer?
    var number : Int = 0
    
 
    override func viewDidLoad() {
        super.viewDidLoad()
    }
 
    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
    }
 
    /** 타이머 시작버튼 클릭 */
    @IBAction func onTimerStart(_ sender: Any) {
        if let timer = mTimer {
            //timer 객체가 nil 이 아닌경우에는 invalid 상태에만 시작한다
            if !timer.isValid {
                /** 1초마다 timerCallback함수를 호출하는 타이머 */
                mTimer = Timer.scheduledTimer(timeInterval: 1, target: self, selector: #selector(timerCallback), userInfo: nil, repeats: true)
            }
        }else{
            //timer 객체가 nil 인 경우에 객체를 생성하고 타이머를 시작한다
            /** 1초마다 timerCallback함수를 호출하는 타이머 */
            mTimer = Timer.scheduledTimer(timeInterval: 1, target: self, selector: #selector(timerCallback), userInfo: nil, repeats: true)
        }
    }
 
    /** 타이머 종료버튼 클릭 */
    @IBAction func onTimerEnd(_ sender: Any) {
        if let timer = mTimer {
            if(timer.isValid){
                timer.invalidate()
            }
        }
        
        number = 0
        txtTime.text = String(number)
    }
    
    
    //타이머가 호출하는 콜백함수
    func timerCallback(){
        number += 1
        txtTime.text = String(number)
    }
}
cs



결과

타이머 시작 버튼을 클릭하면 숫자가 1씩 증가하며 타이머 종료 버튼을 클릭하면 타이머가 종료되고 숫자는 0이된다



+ Recent posts