我正在编写一个带有可自定义调色板的应用程序。我有一个存储这些颜色的设置类(设置),以及一个允许用户修改它们的设置viewcontroller(themeVC),另一个列出可能的值(colorsVC)。
我保留了对两个视图控制器中设置的引用:
let settings = Settings.sharedInstance
在themeVC中,我在表格视图中列出了背景,文字等类别,如下所示:
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关键字的内容,但遗憾的是我无法在这种情况下使用它。
答案 0 :(得分:0)
类是引用类型:
与值类型不同,引用类型在分配给变量或常量或传递给函数时不会被复制。而不是副本,而是使用对同一现有实例的引用。
在上面的例子中,我认为你最好将detailVC.setting设置为设置,然后直接访问/修改对象上的对象属性,而不是传递类属性的值,这有用吗?
中的类是参考类型修改强>
我相信你正在使用colorsVC在themeVC上设置一个颜色,所以你选择了colorsVC,选择一种颜色并将其返回到themeVC表格单元格,对吗?
如果是这样,有几种方法可以实现这一点,我认为最好的方法是将单元格的行传递给colorsVC,以便它可以根据需要更新它。