gpt4 book ai didi

ios - 通过类传递变量

转载 作者:行者123 更新时间:2023-11-28 14:47:41 25 4
gpt4 key购买 nike

我正在尝试通过几个不同的类传递变量以用于核心数据(一对多关系)。

给出正在发生的事情的一些背景。我有一个 tableViewController(工作),当用户单击其中一个单元格时,它会将它们带到带有 4 个 viewController 的 tabBarController。然后在第一个 viewController 上是一个 tableView,如果用户单击特定的单元格,它将把他们带到另一个 tabBarController。我正在尝试传递变量

var job: Job?

从顶层到最终的 tabBarController 但是当试图将变量从第一个 TabBarcontroller 传递到第二个 tabBarController 时它似乎迷路了。我正在努力查看不通过 ViewController 传递变量有什么问题。

这里是每个 ViewControllers 变量以及我如何传递它们:

作业 View Controller :

var jobs = [Job]()

// CELL DID SELECT ROW
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
let jobTab = jobTabController()
jobTab.job = jobs[indexPath.row]
show(jobTab, sender: self)
}

这是第一个 tabBarController - jobTabController:

var job: Job?

这是附加到 jobTabController 的第一个 ViewController - jobInfo:

// OBSERVE JOB
var job: Job? {
let tabBarController = self.tabBarController as! jobTabController
return tabBarController.job
}

// CELL DID SELECT ROW
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
if indexPath.section == 1 {
if indexPath.row == 1 {
let camLens = cameraLensesTabController()
camLens.job = self.job
show(camLens, sender: self)
}
}
}

注意:这是变量似乎丢失的地方 - 在 jobInfo 和 cameraLensesTabController 之间 - 名称:cameraLensesTabController

var job: Job?

然后这是我附加到 cameraLensesTabController 的 viewController - cameraController:

var job: Job?

@IBAction func HandleAddCamera(sender : UIButton) {
let newCamera = newCameraController()
newCamera.job = self.job
let navController = UINavigationController(rootViewController: newCamera)
present(navController, animated: true, completion: nil)
}

在 cameraController 上我有一个添加按钮,它会将您带到另一个名为 newCameraController 的 ViewController,您可以在其中将项目添加到 cameraController 上的 tableView:

var job: Job?

最佳答案

jobInfo Controller 中,您可以通过 tabBarController.job 访问 var job。但是在 cameraLensesTabController 中,您有一个 var Job? 显然已初始化为 nil,就像在 cameraController 中一样。
你是否期望这两个 Controller 可以访问tabBarController.job的原始值?显然,您从未将其转发给他们。

编辑:

当 viewController 执行到另一个 segue(即切换到)时,它首先调用 prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 或其 Swift 等价物。在此函数中,您可以访问目标 viewController 并在那里设置属性,请参阅 https://stackoverflow.com/a/7865100/1987726 .

编辑 2:

prepareForSegue:sender: 方法在任何情况下都会被调用。请查询Perform Segue programmatically and pass parameters to the destination view .

关于ios - 通过类传递变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50118238/

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