Search code examples
ioscocoa-touchuisegmentedcontrol

Define click event for UISegmentedControl


I have added a UISegmentedControl in my application. None of the buttons are selected in normal state. I want to implement a button click event when the first segment is selected, and another event when another button is clicked.


Solution

  • If I understand your question correctly, you simply have to implement a target-action method (supported by UIControl which is UISegmentedControl's parent class) for the constant UIControlEventValueChanged, exactly like in the example given in UISegmentControl's reference documentation.

    i.e.

    [segmentedControl addTarget:self
                         action:@selector(action:)
               forControlEvents:UIControlEventValueChanged];
    

    used for a message with the following signature:

    - (void)action:(id)sender
    

    or

    [segmentedControl addTarget:self
                         action:@selector(action:forEvent:)
               forControlEvents:UIControlEventValueChanged];
    

    for

    - (void)action:(id)sender forEvent:(UIEvent *)event
    

    or

    [segmentedControl addTarget:self
                         action:@selector(action)
               forControlEvents:UIControlEventValueChanged];
    

    for the simplest method:

    - (void)action
    

    which are standard types of target-action selectors used in UIKit.