gpt4 book ai didi

ios - 如何在 View Controller 之间传递变量引用?

转载 作者:行者123 更新时间:2023-11-30 14:00:31 26 4
gpt4 key购买 nike

我正在编写一个具有可自定义调色板的应用程序。我有一个存储这些颜色的设置类(settings),还有一个允许用户修改它们的设置 View Controller (themeVC),还有一个列出可能的值(colorsVC)。

我保留对两个 View Controller 中的设置的引用:

let settings = Settings.sharedInstance

在 themeVC 中,我在表格 View 中列出了背景、文本等类别,如下所示:

let cell = tableView.dequeueReusableCellWithIdentifier("right detail with disclosure", forIndexPath: indexPath) as UITableViewCell

switch indexPath.row {

case 0:
cell.textLabel?.text = "Backgrounds"
cell.detailTextLabel?.text = settings.backgroundColor.name()

case 1:

....

default:
cell.textLabel?.text = "Texts"
cell.detailTextLabel?.text = settings.textColor.name()
}
return cell

我试图将设置值传递给colorsVC,但这样它只是被复制:

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject!) {
if (segue.identifier == "showColorsViewController") {
let detailVC = segue.destinationViewController as! ColorsViewController

detailVC.setting = settings.backgroundColor
}
}

ColorsVC 允许用户选择一种颜色,然后根据在 themeVC 中选择的行修改设置中的相应值。

如何为每个单元格传递不同的值,以便接收颜色VC可以读取并修改相应的设置?

我正在寻找类似 inout 关键字的东西,但遗憾的是我无法在这种情况下使用它。

最佳答案

类是引用类型:

Unlike value types, reference types are not copied when they are assigned to a variable or constant, or when they are passed to a function. Rather than a copy, a reference to the same existing instance is used instead.

在上面的情况下,我认为你最好将detailVC.setting设置为setting,然后直接访问/修改对象上的对象属性,而不是传递类属性的值,这有帮助吗?

请参阅 documentation 中的类是引用类型

编辑:

我相信您正在使用colorsVC在themeVC上设置颜色,因此您可以转到colorsVC,选择一种颜色,然后将其返回到themeVC表格单元格,对吗?

如果是这样,有几种方法可以实现这一点,我认为最好的方法是将单元格的行传递给颜色VC,以便它可以根据需要更新它。

关于ios - 如何在 View Controller 之间传递变量引用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33053956/

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