我已经使用来自不同 ViewController 的委托(delegate)发送了颜色名称,并且数据成功接收(打印了正确的颜色)。然后,如果我想更改 View 本身的背景颜色,则使用我收到的名称,但它不起作用。
func sendColor(color: String) {
let colorLowercased = color.lowercased()
print(colorLowercased)
view.backgroundColor = UIColor(named: "\(colorLowercased)")
print(view.backgroundColor)
}
并且代码执行
更改背景颜色后为零, View 为黑色
在 colorviewController 中,这是我要发送的委托(delegate)函数
@IBAction func colorPressed(_ sender: UIButton) {
let selectedColor = sender.currentTitle
if let delegate = delegate {
delegate.sendColor(color: selectedColor!)
}
_ = navigationController?.popViewController(animated: true)
}
顺便说一句,我正在使用 swift 4.2
最佳答案
它是黑色的,因为您的代码试图将 view.backgroundColor
设置为可能为 nil 的颜色。您的应用 Assets 中是否有已命名
颜色?要添加它们,您可以引用此 post .或者,不是将标题传递给 sendColor:
,而是传递按钮的颜色(标题颜色/bgColor/tintColor)。
func sendColor(颜色: UIColor)
关于ios - 背景颜色不改变?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51974231/