【发布时间】:2018-08-22 19:56:52
【问题描述】:
我已经发送了一个颜色名称以及来自不同 ViewController 的委托,并且数据成功接收(打印了正确的颜色)。然后,如果我想更改视图本身的背景颜色,则使用我收到的名称,但它不起作用。
func sendColor(color: String) {
let colorLowercased = color.lowercased()
print(colorLowercased)
view.backgroundColor = UIColor(named: "\(colorLowercased)")
print(view.backgroundColor)
}
代码执行
更改背景颜色后为 nil 且视图为黑色
在 colorviewController 中,这是我要发送的委托函数
@IBAction func colorPressed(_ sender: UIButton) {
let selectedColor = sender.currentTitle
if let delegate = delegate {
delegate.sendColor(color: selectedColor!)
}
_ = navigationController?.popViewController(animated: true)
}
顺便说一句,我正在使用 swift 4.2
【问题讨论】:
-
您必须在名称和相应的
UIColor之间创建映射。 -
什么是映射?
-
可能是一本字典?上面写着“绿色”-> UIColor.green、“红色”-> UIColor.red 等
-
简短回答:您的方法行不通。您无法从作为颜色名称的字符串值中获取颜色。该初始化程序用于从资产中获取颜色。
-
哦。那我该怎么办
标签: ios iphone delegates swift4.2