我遇到一个问题,将一个简单的变量从一个类转移到另一个类,这是极其令人沮丧的:/ ...
这里是我有两个视图控制器类命名的交易:ViewController.swift
与ViewController2.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中显示的包的实际坐标。
在ViewController2中创建以下变量
var previousViewController: ViewController!
在ViewController类中添加以下代码
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?){
if segue.destinationViewController .isKindOfClass(ViewController2){
let vc2 = segue.destinationViewController as! ViewController2
vc2.previousViewController = self
}
}
现在viewDidLoad
,ViewController2
您可以使用如下方法访问bagCenter:
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
var bagCenter = previousViewController.transferViewControllerVariables()
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句