
今回はタイマークラスのscheduledTimerメソッドを使って1秒毎にテキスト変更してみた!
完成はこんな感じです。
左のボタンを押したら自動的にテキストが切り替わり、右側のボタンでストップしています。
buttonを2つとlabelをstoryboardに配置し、ViewController.swiftと紐付けておきます。
名前はbtnとbtn2とlabel1にしましたが任意の名前で大丈夫です。
buttonはActionにします。
まずvar [任意の名前]: Timer!と書きます。
こんな感じです。
var btnTimer: Timer!
矢印の部分を任意で書き換えるだけで使えます。
#selector(self.chageColor)のchageColorは後で作る関数名です。
ここで書いた関数が指定した秒数毎に実行されます。
上の写真のコードが下記のコードなんですけど、#から先がグレーになってるけど気にしないでコピペして下さい。
func startTimer() {
self.btnTimer = Timer.scheduledTimer(timeInterval: 1, target: self,
selector: #selector(self.chageColor), userInfo: nil, repeats: true)
}
その前に変数を一つ宣言しておきます。今回はvar x = 0と言う変数を用意しました。
2行目からの関数ですが、最初に実行される処理で変数xに1を足しています。
その後if文でxに代入されている数字と1・2・3・4を比較してそれぞれ処理を分岐しています。
var x = 0
@objc func chageColor() {
x += 1
if x == 1 {
self.label1.text = "毎日"
} else if x == 2 {
self.label1.text = "宝焼酎を"
} else if x == 3 {
self.label1.text = "100円ローソンの"
} else if x == 4 {
self.label1.text = "酎割用レモンソーダで"
} else if x == 5 {
self.label1.text = "割って飲んでます。"
x = 0
}
}
btnを押したらタイマーがスタートして、btn2を押したらタイマーがストップする処理を書きます。
btnの方には3.で作ったstartTimer()関数を書く事でbtnが押された時にタイマーをスタートさせています。
btn2の方にはstartTimer()で走っているbtnTimerをストップさせています。
@IBAction func btn(_ sender: Any) {
startTimer()
}
@IBAction func btn2(_ sender: Any) {
self.btnTimer!.invalidate()
}
コメントを残す