我的第一个控制器中有一个对象数组,我通过模态segue修改它。此模态视图与创建新对象并填充它相同。
在这个模态的故事板中,我有3个TextField和5个代表颜色的按钮。当用户点击其中一个时,我绘制一个边框以将其标记为已选中。
当我加载此模态视图以修改现有对象时,我需要绘制正确按钮的边框。
我有一个方法,但它需要参数中的UIButton实例。所以我想知道是否可以使用switch语句来了解我的对象中的颜色,并使用良好的UIButton实例调用该函数。
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()
}
Thansk提前回答你的问题!
编辑:
我尝试打印这个颜色实例,看看我是否可以通过其他方式对其进行转换以使切换工作。
println("\(action?.color)")
打印
Optional(UIDeviceWhiteColorSpace 1 1) // UIColor.whiteColor()
Optional(UIDeviceRGBColorSpace 1 0 0 1) // UIColor.redColor()
所以我不知道我能做什么,因为它会返回不同的东西
答案 0 :(得分:2)
正如控制台中的输出所示,“颜色”'属性是可选的。你需要:
在switch语句之前使用Optional Chaining和Optional Binding:
if let colorUnwrapped = action?.color {
switch colorUnwrapped {
//etc
答案 1 :(得分:0)
由于action?.color
的类型为UIColor?
(Optional<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()
}