2017-09-14 93 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

现在工作都很漂亮。谢谢! –