2016-08-02 61 views
1

我有正從一個類中的一個簡單的變量到另一個問題,它是超越非常令人沮喪:/ ...如何訪問另一個類中的變量? SWIFT代碼

這裏是交易,我有兩個視圖控制器類命名爲:ViewController.swiftViewController2.swift

ViewController.swift鏈接到一個故事板,有一個我已經放置的庫存包,這只是一個圖像。然後有一個@IBAction,當你點擊它打開的包,第二個故事板彈出到視圖中。這由ViewController2.swift控制。我所要做的只是將ViewController中的包圖像的中心傳遞給ViewController2,但我似乎無法讓它工作,任何幫助都將不勝感激。

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了袋的實際COORDS。

+1

您在ViewController2 –

+0

創建視圖控制器的新實例,我將如何去不同的看法?在此先感謝:) –

回答

1

在ViewController2在你的ViewController類中的ViewController2viewDidLoad方法創建以下變量的代碼

var previousViewController: ViewController! 

添加以下行現在

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

    if segue.destinationViewController .isKindOfClass(ViewController2){ 
     let vc2 = segue.destinationViewController as! ViewController2 
     vc2.previousViewController = self 
    } 
} 

您可以訪問bagCenter象下面這樣:

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


    var bagCenter = previousViewController.transferViewControllerVariables() 
} 
+0

這使得應用程序崩潰,每當我通過打開庫存切換到該視圖 –

+0

你可以在這裏把代碼,你在哪裏導航到ViewController2 –

+0

我編輯了答案。請檢查 –

1

試試這種方式Contro米勒

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

class ViewController2: UIViewController { 
    var bagCenter:CGPoint! 
    override func viewDidLoad() { 
     super.viewDidLoad() 
     print(bagCenter) 
    } 
} 
相關問題