[英]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)
}
}
}
視圖控制器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
}
}
}
您沒有使用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.