前提・実現したいこと
前の画面のpickerviewから渡された値でカウントダウンをし、タイマーが0になったら次の画面に遷移したいです。
他の画面の画面遷移では、
swift
1let timerPoint = storyboard?.instantiateViewController(withIdentifier: "toDViewController") as! DViewController
に値する部分は問題なく動いているのですが、ここの画面だけ止まってしまいます。
条件で画面遷移するやり方を教えていただきたいです。また、コードの中に間違っている部分があったら教えていただきたいです。よろしくお願いします。
該当のソースコード
swift
1import UIKit 2 3class ThirdViewController: UIViewController { 4 5 var timer = Timer() 6 var count = 0 7 var getTime:Int! 8 var getPoint = Int() 9 10 @IBOutlet weak var timerLabel: UILabel! 11 12 override func viewDidLoad() { 13 super.viewDidLoad() 14 runTimer() 15 16 count = 0 17 timerLabel.text = timeString(time: TimeInterval(getTime)) 18 } 19 20 21 @objc func updateTimer() -> Int { 22 23 count += 1 24 25 let remainCount = getTime - count 26 timerLabel.text = timeString(time: TimeInterval(remainCount)) 27 28 29 if remainCount == 0 { 30 timer.invalidate() 31 32 let timerPoint = storyboard?.instantiateViewController(withIdentifier: "toDViewController") as! DViewController 33 34 timerPoint.getPoint = getPoint 35 36 } 37 return remainCount 38 39 } 40 41 //タイマーを動かす関数 42 func runTimer() { 43 timer = Timer.scheduledTimer(timeInterval: 1, target: self, selector: #selector(self.updateTimer), userInfo: nil, repeats: true) 44 } 45 46 //00:00:00に変える処理 47 func timeString(time: TimeInterval) -> String { 48 let hour = Int(time) / 3600 49 let minutes = Int(time) / 60 % 60 50 let second = Int(time) % 60 51 52 return String(format: "%02d:%02d:%02d", hour, minutes, second) 53 } 54 55 56} 57
試したこと
遷移のコードの場所を変えてみたり、classの名前を確認しました。
いろいろ調べてみたのですが、ボタンで遷移するやり方しか書いておらず、条件で遷移するやり方がわかりませんでした。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/07/23 01:15
2020/07/23 01:34
2020/07/23 13:38