2017-09-14 94 views
-3

我無法通過ViewControllers傳遞變量,即使我真的認爲我已經完成了所有的必需品。無法通過segue傳遞數據。 Swift

Game3ViewController:

class Game3ViewController: UIViewController, CLLocationManagerDelegate 
{ 
var START = 1 

var zombieMarkersCenters: [[Double]] = Array(repeating:Array(repeating:0, count:2), count:10) 

var zombieHealth: [Int] = Array(repeating:100, count:10) 

var HP = 100 

var bullets = [0,0] 

/* ... REST OF THE CODE */ 

override func viewDidAppear(_ animated: Bool) 
{ 
/* here I assign values to the variables */ 
} 

/* ... REST OF THE CODE */ 

func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) 
{ 
    if segue.identifier == "goToBackpack" 
    { 
     let Backpack4 = segue.destination as! Backpack4ViewController 

     Backpack4.zombieMarkersCentersBackpack = zombieMarkersCenters 
     Backpack4.bulletsBackpack = bullets 
     Backpack4.STARTBackpack = START 
     Backpack4.zombieHealthBackpack = zombieHealth 
    } 
} 

/* ACTIONS */ 

@IBAction func openBackpack(_ sender: Any) 
{ 
    performSegue(withIdentifier: "goToBackpack", sender: self) 

    timer.invalidate() 
} 

Backpack4ViewController:

class Backpack4ViewController: UIViewController 
{ 
    var zombieMarkersCentersBackpack = [[Double]]() 
    var bulletsBackpack = [Int]() 
    var STARTBackpack = Int() 
    var zombieHealthBackpack = [Int]() 

override func viewDidLoad() 
    { 
     super.viewDidLoad() 
     print("WORKS?: ", bulletsBackpack, STARTBackpack, zombieHealthBackpack) 

    /* ... REST OF THE CODE */ 

並與打印結果:[] 0 [],所以我想數據通道從來沒有發生過。我該怎麼辦?

+0

你做了什麼調試?你是否瀏覽了你的代碼並使用了斷點?當您使用調試器並逐步完成代碼時,您確定調用了所有正確的方法,並且所有變量均已正確設置? –

回答

2

的問題是,這是不是說永遠不會被調用的方法:

func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 

這是沒有意義的;它不會被調用,並且您的代碼將永遠不會運行。

你需要這樣寫:

override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 

現在你的方法將被調用。

+0

現在工作都很漂亮。謝謝! –