如何使用第三方ViewController /类将整个Swift类实例传递给另一个类?

时间:2015-12-19 01:43:46

标签: ios reference swift2 instance

我有一个名为ViewController(初始视图控制器)的类,它具有各种属性。我试图在不同的第三方视图控制器/类中,将这些属性的相同唯一实例传递到另一个视图控制器(以编程方式),并且没有从初始ViewController传递数据的直接Segue。

class ViewController: UIViewController
{
    var X:string
    var dataDelegate:DataServiceDelegate?
    var Z: [String]=[]
}

我想将ViewController的整个类实例传递给另一个名为ClassZ的类,以便属性XdataDelegateZ两个班级都是一样的。

但是,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最终修改相同的数据。

0 个答案:

没有答案