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中的变量是否来自此?