Get button pressed id on Swift via sender

后端 未结 15 1093
广开言路
广开言路 2020-12-01 04:21

So I have a storyboard with 3 buttons I want to just create 1 action for all those 3 buttons and decide what to do based on their label/id...

Is there a way to get s

15条回答
  •  醉梦人生
    2020-12-01 04:57

    You can set a tag in the storyboard for each of the buttons. Then you can identify them this way:

    @IBAction func mainButton(sender: UIButton) {
        println(sender.tag)
    }
    

    EDIT: For more readability you can define an enum with values that correspond to the selected tag. So if you set tags like 0, 1, 2 for your buttons, above your class declaration you can do something like this:

    enum SelectedButtonTag: Int {
        case First
        case Second
        case Third
    }
    

    And then instead of handling hardcoded values you will have:

    @IBAction func mainButton(sender: UIButton) {
        switch sender.tag {
            case SelectedButtonTag.First.rawValue:
                println("do something when first button is tapped")
            case SelectedButtonTag.Second.rawValue:
                println("do something when second button is tapped")
            case SelectedButtonTag.Third.rawValue:                       
                println("do something when third button is tapped")
            default:
                println("default")
        }
    }
    

提交回复
热议问题