Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/120.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何在ViewController之间传递变量引用?_Ios_Swift_Uiviewcontroller - Fatal编程技术网

Ios 如何在ViewController之间传递变量引用?

Ios 如何在ViewController之间传递变量引用?,ios,swift,uiviewcontroller,Ios,Swift,Uiviewcontroller,我正在编写一个带有可定制调色板的应用程序。我有一个存储这些颜色的设置类settings,一个允许用户修改它们的设置viewcontroller themeVC,还有一个列出可能值colorsVC 我保留对两个视图控制器中设置的引用: let settings = Settings.sharedInstance 在themeVC I中,在如下表格视图中列出背景、文本等类别: let cell = tableView.dequeueReusableCellWithIdentifier("right

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

我保留对两个视图控制器中设置的引用:

let settings = Settings.sharedInstance
在themeVC I中,在如下表格视图中列出背景、文本等类别:

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允许用户选择颜色,然后根据在MEVC中选择的行修改设置中的相应值

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


我正在寻找类似inout关键字的内容,但遗憾的是,我无法在此场景中使用它。

类是引用类型:

与值类型不同,引用类型在指定给变量或常量或传递给函数时不会复制。而是使用对同一现有实例的引用,而不是副本

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

请参见中的类是引用类型

编辑:

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


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

我需要知道在colorsVC中修改哪种颜色。有没有办法将颜色作为引用传递?我不认为你可以通过引用,你最好将设置对象传递给detailVC,然后使用self.setting.backgroundColor=UIColor.blackColor或类似的东西,然后它会更新。否则,您可能需要集中保存对象的单个实例,可能在AppDelegate或NSUserDefaultsIt中。这不仅仅是背景,我还有很多要修改的。有没有一种方法可以知道哪种颜色,而不用传递一个数字作为id并在colorsVC中创建大量开关?我不完全理解你的意思,你的colorsVC到底做什么?您是否只是使用颜色来选择颜色,并且希望将值传递回themeVC?colorVC需要修改设置。还更新了问题