我有一个名为ViewController
(初始视图控制器)的类,它具有各种属性。我试图在不同的第三方视图控制器/类中,将这些属性的相同唯一实例传递到另一个视图控制器(以编程方式),并且没有从初始ViewController传递数据的直接Segue。
class ViewController: UIViewController
{
var X:string
var dataDelegate:DataServiceDelegate?
var Z: [String]=[]
}
我想将ViewController
的整个类实例传递给另一个名为ClassZ
的类,以便属性X
,dataDelegate
和Z
两个班级都是一样的。
但是,ClassZ
的Segue在第三方类中以编程方式调用,称为ClassY
。因此,我必须能够在ClassY或Class Z中引用ViewController的特定类实例(在访问ClassY之前创建),而无需ViewController的直接Segue。
我已经为ClassY尝试了以下操作,我首先尝试创建一个指向先前创建的ViewController实例的指针,然后以编程方式将其传递给ClassZ。请注意,ViewController类的故事板ID为mainView
:
class ClassY: UIViewController
{
let storyBoard = UIStoryboard(name: "Main", bundle: nil)
lazy var viewControllerPointer: ViewController = {
return self.storyBoard.instantiateViewControllerWithIdentifier("mainView") as! ViewController
}()
//code goes here
func performViewSwitchToClassZ(){
let ClassZ:ClassZ = storyboard!.instantiateViewControllerWithIdentifier("MainStoryBoard") as! ClassZ
ClassZ.x=channelNumber
ClassZ.viewController = viewControllerPointer
presentViewController(ClassZ, animated: true, completion: nil)
}
}
然而,当调用segZ到ClassZ并加载ClassZ时,它最终创建一个新的ViewController实例(" viewControllerPointer"在ClassY中引用)。这是一个问题,因为我想使用相同的ViewController实例,以便ViewController和ClassZ最终修改相同的数据。