2017-01-08 10 views
0

ボタンを2回押すと別のView Controllerに転送されるゲームを作っています。今では、ユーザの反応時間は、ビューコントローラ42aにおいて計時される。私は時間をコントローラbを見るためにセグしたいと思っています。そして、ビューコントローラbで時間を1だけ引くと、時間が欲しいと思います。今は時間がずれることはありません。ボタンを2回押すと、表示コントローラーは変更されますが、テキストは転送されません。Segueが転送されていません(スウィフト3)

import UIKit 

class ViewController: UIViewController { 

    @IBOutlet var labelx: UILabel! 
    @IBOutlet var startx: UIButton! 
    @IBOutlet var pressSoccerBall: UIButton! 
    var level = 0 
    var timer: Timer? 
    var isRunning: Bool { 
     get { 
      return timer != nil 
     } 
    } 
    var counter = 0.0 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     labelx.text = String(format: "%.1f", counter) 
     startx.isEnabled = true 
    } 

    @IBAction func startTimer(_ sender: Any) { 
     if isRunning { 
      return 
     } 
     refreshTimer() 
    } 

    @IBAction func PressSoccerBall(_ sender: Any) { 
     level += 1 
    } 

    override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 
     let DestViewController : winViewController = segue.destination as!  winViewController 
     DestViewController.LebelText = labelx.text! 
    } 

    func refreshTimer() { 

     if let timer: Timer = timer { 
      timer.invalidate() 
     } 
     timer = Timer.scheduledTimer(timeInterval: 0.1,target: self,selector: #selector(updateTimer),userInfo: nil, repeats: true) 
     startx.isEnabled = false 
    } 

    func updateTimer() { 
     counter += 0.1 
     labelx.text = String(format: "%.1f", counter) 
     if counter < 9.9 && level == 2 { 
      let nextc = self.storyboard?.instantiateViewController(withIdentifier: "winViewController") as? winViewController 
      self.present(nextc!, animated: true, completion: nil) 
     } 
    } 
} 

pic of vc a

ビューコントローラのBあなたはseguesを使用していない

import UIKit 

class winViewController: UIViewController { 

    @IBOutlet var winningLabel: UILabel! 
    public var LebelText: String? 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     steve() 
    } 

    func steve(){ 

     guard let unwrapedText = self.LebelText else { 
      return 
     } 
     if let myInt = Double(unwrapedText){ 
      let myInt = myInt - 1 
      self.winningLabel.text = String(myInt) 

     } else { 
      return 
     } 
    } 

} 

PIC OF VIEW CONTROLLER B

+0

をあなたは、デリゲートを使用する必要があります。 –

答えて

0

winViewControllerを作成し、presentを呼び出して表示します。したがって、prepareForSegueは決して呼び出されません。

は、単純にそれを提示する前nextcLebelTextプロパティを設定します。

func updateTimer() { 
    counter += 0.1 
    labelx.text = String(format: "%.1f", counter) 
    if counter < 9.9 && level == 2 { 
     if let nextc = self.storyboard?.instantiateViewController(withIdentifier: "winViewController") as? winViewController { 
      nextc.LebelText = labelx.text 
      self.present(nextc, animated: true, completion: nil) 
     } 
    } 
} 
関連する問題