- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在编写一个具有可自定义调色板的应用程序。我有一个存储这些颜色的设置类(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/
我是一名优秀的程序员,十分优秀!