簡體   English   中英

Segue未轉移到(Swift 3)

[英]Segue is not being transferred in (swift 3)

我正在做一個游戲,當按下按鈕兩次時,它將轉移到另一個視圖控制器。 現在,用戶反應時間在視圖控制器a中計時。 我希望為視圖控制器b設置時間,並且在視圖控制器b中將時間減去1。現在,該時間尚未確定。 當兩次按下按鈕時,視圖控制器會更改,但文本不會被傳輸。

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)
        }
    }
}

vc的照片

視圖控制器B

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
        }
    }

}

視圖控制器B

您沒有使用segues。 您正在創建winViewController ,然后調用present進行顯示。 因此,永遠不會調用prepareForSegue

只需設置LebelText物業nextc呈現之前:

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)
        }
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM