我还有另一个新问题......
我有一个带有30个按钮(名为day1 ... day30)的视图控制器和30个文本字段(称为field1 ... field30)。对于按钮和文本字段的每个组合,我都有一些代码,如下所示:
@IBAction func day1(sender: UIButton) {
if day1.backgroundColor != UIColor.greenColor() {
day1.backgroundColor = UIColor.greenColor()
field1.enabled = false
} else {
day1.backgroundColor = UIColor.whiteColor()
field1.enabled = true
}
}
我的问题......(1)这可以用更好/更短的方式完成吗?(2)我是否必须为所有30个按钮/字段组合编写此代码,或者是否有更聪明的方法?
任何帮助表示赞赏。 谢谢, 扬
答案 0 :(得分:0)
您可以通过编程方式创建它:
首先创建一个循环,在其中创建30个按钮。如您所见,我设置每个按钮的tag
属性并使用索引,以便我们可以检查以后按下哪个按钮并对其做出正确反应。按钮的大小和位置将通过索引(index*30
):
for index in 0...30{
//Set Position of the button by using the index
var button = UIButton(frame: CGRectMake(0, CGFloat(index)*30, 50, 50))
//Set the tag so you can check it later
button.tag = index
button.currentTitle = "Button \(index)"
//Sets, which method should be called when the button is pressed
button.addTarget(button, action: Selector("aButtonPressed:"), forControlEvents: UIControlEvents.TouchDown)
}
然后,我们创建一个方法,我们在for循环中调用并检查按下的按钮具有哪个标记:
//Sender is the button which is pressed
func aButtonPressed(sender:UIButton){
switch sender.tag{
case 1:
println("first pressed")
case 2:
println("second pressed")
default:
break
}
}