Xcode 如何从一个类访问另一个类中的变量?银行代码

Xcode 如何从一个类访问另一个类中的变量?银行代码,xcode,variables,uiviewcontroller,global,transfer,Xcode,Variables,Uiviewcontroller,Global,Transfer,我在从一个类到另一个类获取一个简单变量时遇到了一个问题,这是非常令人沮丧的:/ 这是我的两个视图控制器类:ViewController.swift和ViewController2.swift ViewController.swift链接到一个故事板,故事板上有一个我放置的库存袋,它只是一个图像。然后有一个@iAction,当你点击袋子时,它会打开,第二个故事板会弹出到视图中。这由ViewController2.swift控制。我所要做的只是简单地将行李图像的中心从ViewController传递

我在从一个类到另一个类获取一个简单变量时遇到了一个问题,这是非常令人沮丧的:/

这是我的两个视图控制器类:
ViewController.swift
ViewController2.swift

ViewController.swift
链接到一个故事板,故事板上有一个我放置的库存袋,它只是一个图像。然后有一个@iAction,当你点击袋子时,它会打开,第二个故事板会弹出到视图中。这由
ViewController2.swift
控制。我所要做的只是简单地将行李图像的中心从ViewController传递到ViewController 2,但我似乎无法使其正常工作。如能提供任何帮助,将不胜感激

class ViewController: UIViewController {
    @IBOutlet weak var InventoryBag: UIImageView!
    var bagCenter:CGPoint = CGPoint(x: 0, y: 0)

    override func viewDidLoad() {
        super.viewDidLoad()

        @IBAction func InventoryButtonTapped(sender: UIButton) {
            self.InventoryBag.image = UIImage(named: "backpackimageopen")
            bagCenter = self.InventoryBag.center

        func transferViewControllerVariables() -> (CGPoint){
            return bagCenter
            }
当我从这个ViewController打印bagCenter时,它工作正常,并给我一个正确的值。因此,我想以某种方式将
bagCenter
变量传递给
ViewController2.swift

下面是我在
ViewController2.swift中尝试的内容,但它似乎从来都不起作用,总是给我一个0而不是实际值

class ViewController2: UIViewController {

@IBOutlet weak var HideButton: UIButton!
@IBOutlet weak var InventoryCollection: UICollectionView!



override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view.

    //Load the center of the inventory bag to this view controller to align the hide button.
    var bagCenter = ViewController().transferViewControllerVariables()
}

但是当我这样做的时候,它总是会产生一个0,并且我没有得到在ViewController1中显示的行李的实际坐标。

在ViewController2中创建以下变量

var previousViewController: ViewController!
class ViewController2: UIViewController {
    var bagCenter:CGPoint!
    override func viewDidLoad() {
        super.viewDidLoad()
        print(bagCenter)
    }
}
在ViewController类中添加以下代码行

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

    if segue.destinationViewController .isKindOfClass(ViewController2){
      let vc2 = segue.destinationViewController as! ViewController2
        vc2.previousViewController = self
    }
}
现在,在
viewdiload
方法的
ViewController2
中,您可以访问bagCenter,如下所示:

override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view.


    var bagCenter = previousViewController.transferViewControllerVariables()
}

在视图控制器中尝试此操作

class ViewController: UIViewController { 

 @IBOutlet weak var InventoryBag: UIImageView!
    var bagCenter:CGPoint = CGPoint(x: 0, y: 0)

    override func viewDidLoad() {
        super.viewDidLoad()
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
    }

    @IBAction func InventoryButtonTapped(sender: AnyObject) {
        self.InventoryBag.image = UIImage(named:"MAKEUP_SHARE.jpg")
        bagCenter = self.InventoryBag.center
        performSegueWithIdentifier("Go", sender: self)
    }


    // Give a segue identifier in storyboard
    override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
        if segue.identifier == "yoursegueidentifier" {
            let dvc =  segue.destinationViewController as? ViewController2
            dvc!.bagCenter = bagCenter
        }
    }
}
和视图控制器2

var previousViewController: ViewController!
class ViewController2: UIViewController {
    var bagCenter:CGPoint!
    override func viewDidLoad() {
        super.viewDidLoad()
        print(bagCenter)
    }
}

您正在ViewController2中创建一个新的ViewController实例,我将如何进行不同的操作?提前感谢:)每当我打开清单切换到该视图时,这会使应用程序崩溃。你能把代码放在这里吗,当您导航到ViewController2I时,我正在使用本网站上关于从两个视图控制器转换的教程。我的代码中显示的只是退出序列,因为我在故事板中执行了
演示模式序列。好吧,更新代码后没有崩溃,但我现在如何访问bagCenterviewcontroller2中的变量是否来自此?