如何处理很多按钮和字段

时间:2015-05-08 21:34:04

标签: swift

我还有另一个新问题......

我有一个带有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个按钮/字段组合编写此代码,或者是否有更聪明的方法?

任何帮助表示赞赏。 谢谢, 扬

1 个答案:

答案 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
    }
}