Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Set The Target and Selector of a Button to Multiple Methods

I want to add multiple methods in that respond as the selector when a button is pressed. Can one button have two methods that get called when the button is pressed?

Through my research, I found, in the objective-C Programming Language Guide, that a button will call All methods with the same name as the selector.

I want my button to do two actions at the same time:

  1. play the audio file
  2. display views in array.

    UIBarButtonItem *play = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemPlay target:self action:@selector(play:)];

Appreciate advice.

Thanks

like image 398
user1120133 Avatar asked Dec 06 '22 16:12

user1120133


2 Answers

@selector() literally just returns a SEL value, which is just a name (in fact, under the hood, it's literally a string). It doesn't specify any particular behavior. Classes choose how to respond when they're sent a selector.

You could certainly have a class implement a method that does two things and set the selector for that method to be a control's action:

- (void)eatCakeAndIceCream {
    [self eatCake];
    [self eatIceCream];
}

You can also add multiple actions to a control with repeated calls of addTarget:action:forControlEvents::

[someControl addTarget:self action:@selector(eatCake) forControlEvents:UIControlEventTouchDown];
[someControl addTarget:self action:@selector(eatIceCream) forControlEvents:UIControlEventTouchDown];
like image 171
Chuck Avatar answered Jan 05 '23 00:01

Chuck


You can specify multiple target-action pairs for a particular event.

[btn addTarget:self action:@selector(playSound:) forControlEvents:UIControlEventTouchUpInside];
[btn addTarget:self action:@selector(displayViews:) forControlEvents:UIControlEventTouchUpInside];
like image 30
Iñigo Beitia Avatar answered Jan 05 '23 00:01

Iñigo Beitia