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