見出し画像

Swiftで行こう!- Timer!2

まず前回に引き続きですが、ちょっと追加した全コードです。

それで追加したコードですが、まず、ボタンです。ボタンを押すと、タイマーを止めます。"invalidate()"の命令でストップします。

import UIKit
import PlaygroundSupport
// UIViewController(画面の部品)
class ViewController: UIViewController {
   
    var timer: Timer!
   
   override func viewDidLoad() {
       super.viewDidLoad()
       
       let button = UIButton(frame:CGRect(x: 50, y: 50, width: 200, height: 40))
       button.setTitle("押してね!", for: UIControl.State.normal)
       button.setTitle("ok", for: UIControl.State.highlighted)
       button.backgroundColor = UIColor.blue
       
       button.addTarget(self, action: #selector(self.onclick(_:)), for: .touchUpInside)
       
       view.addSubview(button)
            
       startTimer()
       
   }
   
   @objc func onclick(_ sender:Any){
       print("click")
       timer.invalidate()
       
   }
   
   
   func startTimer() {
       timer = Timer.scheduledTimer(
           timeInterval: 1,
           target: self,
           selector: #selector(self.timerCounter),
           userInfo: nil,
           repeats: true)
   }
   
   @objc func timerCounter() {    
       print("ok")  
   }
   
   
}
let window = UIWindow(frame: CGRect(x: 0, y: 0, width: 300, height: 500))
let viewController = ViewController()
viewController.view.backgroundColor = UIColor.gray
window.rootViewController = viewController
window.makeKeyAndVisible()
PlaygroundPage.current.liveView = window

こんな感じになります。

スタートすると、"ok"が1秒ごとにコンソールに出力されます。そのあとボタン「押してね」を押すと、コンソール出力が止まります。

この記事が気に入ったらサポートをしてみませんか?