无法通过segue传递数据。 Swift
问题描述:
我无法通过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 [],所以我想数据通道从来没有发生过。我该怎么办?
答
的问题是,这是不是说永远不会被调用的方法:
func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
这是没有意义的;它不会被调用,并且您的代码将永远不会运行。
你需要这样写:
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
现在你的方法将被调用。
+0
现在工作都很漂亮。谢谢! –
你做了什么调试?你是否浏览了你的代码并使用了断点?当您使用调试器并逐步完成代码时,您确定调用了所有正确的方法,并且所有变量均已正确设置? –