gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 12:08:06 25 4
gpt4 key购买 nike

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

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

我想将 ViewController 的整个类实例传递给另一个名为 ClassZ 的类,以便属性 X dataDelegateZ 在两个类中是相同的。

但是,ClassZ 的 Segue 在第三方类中以编程方式调用,称为 ClassY。因此,我必须能够在 ClassY 或 Class Z 中引用 ViewController 的特定类实例(在访问 ClassY 之前创建),而无需来自 ViewController 的直接 Segue。

我已经为 ClassY 尝试了以下方法,其中我首先尝试创建一个指向先前创建的 ViewController 实例的指针,然后以编程方式将其传递给 ClassZ。请注意,ViewController 类的 Storyboard 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)
}
}

但是,当调用到 ClassZ 的 segue 并加载 ClassZ 时,它最终会创建一个新的 ViewController 实例(即 ClassY 中引用的“viewControllerPointer”)。这是一个问题,因为我想使用相同的 ViewController 实例,以便 ViewController 和 ClassZ 最终修改相同的数据。

最佳答案

我不知道这是否是正确的做法,但我希望它可以解决您的问题,创建另一个具有变量 viewController 静态实例的类,如下所示:

import UIKit

class DataStore {
static var controller: UIViewController?
}

然后将 viewController 的实例存储在 ViewController 类中的 Controller 变量中,如下所示:

 DataStore.controller = self

稍后在类 Z 中,您可以按如下方式访问 View Controller 实例:

DataStore.controller

关于ios - 如何在使用第三方 ViewController/类时将整个 Swift 类实例传递给另一个类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34366397/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com