Get button pressed id on Swift via sender

后端 未结 15 1089
广开言路
广开言路 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:53

    You can create an outlet for your buttons and then implement:

    @IBAction func mainButton(sender: UIButton) {
        switch sender {
        case yourbuttonname:
            // do something
        case anotherbuttonname:
            // do something else
        default: println(sender)
        }
    }
    
    0 讨论(0)
  • 2020-12-01 04:56

    You have to set tag value to what you need and access it with

    sender.tag
    
    0 讨论(0)
  • 2020-12-01 04:56

    You can do like this, just you have to give tag to all the buttons and do like this:

    @IBAction func mainButton(sender: AnyObject)
        {
            switch sender.tag {
            case 1:
                println("do something when first button is tapped")
            case 2:
                println("do something when second button is tapped")
            case 3:
                println("do something when third button is tapped")
    
            default:
                println("default")
            }
    
        }
    
    0 讨论(0)
  • 2020-12-01 04:56

    Select your first button and give it tag 0, and select second button and give it tag 1 and so on, in action check the tag bit and perform you functionalities on the basis of tag bit.:

    0 讨论(0)
  • 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")
        }
    }
    
    0 讨论(0)
  • 2020-12-01 04:57

    Swift 4

    add tag on button

    let button = UIButton()
    button.tag = 10
    

    click event

    @IBAction func mainButton(sender: UIButton) {
        switch sender.tag {
    
        case 10:
            print("10")
        case 11:
            print("11")
    
        default:
             print("yes")
        }
    }
    

    happy coding :)

    0 讨论(0)
提交回复
热议问题