Swift 在switch语句中使用UIColor
在我的第一个控制器中有一个对象数组,我正在传递一个数组以通过模态segue修改它。此模式视图与创建新对象和填充该对象相同 在这个模式的故事板中,我有3个文本字段和5个代表颜色的按钮。当用户单击其中一个时,我会绘制一个边框以将其标记为选中 当我加载此模式视图以修改现有对象时,我需要绘制正确按钮的边框 我有一个这样做的方法,但它需要参数中的UIButton实例。所以我想知道是否可以使用switch语句来知道对象中的颜色,并使用良好的UIButton实例调用函数Swift 在switch语句中使用UIColor,swift,switch-statement,uicolor,Swift,Switch Statement,Uicolor,在我的第一个控制器中有一个对象数组,我正在传递一个数组以通过模态segue修改它。此模式视图与创建新对象和填充该对象相同 在这个模式的故事板中,我有3个文本字段和5个代表颜色的按钮。当用户单击其中一个时,我会绘制一个边框以将其标记为选中 当我加载此模式视图以修改现有对象时,我需要绘制正确按钮的边框 我有一个这样做的方法,但它需要参数中的UIButton实例。所以我想知道是否可以使用switch语句来知道对象中的颜色,并使用良好的UIButton实例调用函数 switch action?.
switch action?.color {
case UIColor.redColor(): setBorderColor(rougeButton)
case UIColor.blueColor(): setBorderColor(bleuButton)
case UIColor.yellowColor(): setBorderColor(jauneButton)
case UIColor.greenColor(): setBorderColor(vertButton)
case UIColor.whiteColor(): setBorderColor(blancButton)
default:
setBorderColor(blancButton)
action?.color = UIColor.whiteColor()
}
请提前询问您的答案
编辑:
我试图打印这个颜色实例,看看是否可以用其他方式对其进行转换以使开关工作
println("\(action?.color)")
哪张照片
Optional(UIDeviceWhiteColorSpace 1 1) // UIColor.whiteColor()
Optional(UIDeviceRGBColorSpace 1 0 0 1) // UIColor.redColor()
因此,我不知道我能做什么,因为它返回不同的内容,因为
操作?的类型。color
是UIColor?
(可选
),您必须将其展开:
if let actionColor = action?.color {
switch actionColor {
case UIColor.redColor(): setBorderColor(rougeButton)
case UIColor.blueColor(): setBorderColor(bleuButton)
case UIColor.yellowColor(): setBorderColor(jauneButton)
case UIColor.greenColor(): setBorderColor(vertButton)
case UIColor.whiteColor(): setBorderColor(blancButton)
default:
setBorderColor(blancButton)
action?.color = UIColor.whiteColor()
}
}
else {
setBorderColor(blancButton)
action?.color = UIColor.whiteColor()
}
或使用枚举案例模式:
switch action?.color {
case .Some(UIColor.redColor()): setBorderColor(rougeButton)
case .Some(UIColor.blueColor()): setBorderColor(bleuButton)
case .Some(UIColor.yellowColor()): setBorderColor(jauneButton)
case .Some(UIColor.greenColor()): setBorderColor(vertButton)
case .Some(UIColor.whiteColor()): setBorderColor(blancButton)
default:
setBorderColor(blancButton)
action?.color = UIColor.whiteColor()
}
正如控制台中的输出所示,“color”属性是可选的。您需要:
if let colorUnwrapped = action?.color {
switch colorUnwrapped {
//etc
我认为错误不仅仅是因为包装的UIColor,而是因为我无法将对象放入开关。现在很好用,谢谢!