How to pass a variable to a UIButton action

Change it to read:

[downbutton addTarget:self action:@selector(action1:) forControlEvents:UIControlEventTouchUpInside];

I don't know about the Iphone SDK, but the target of a button action probably receives an id (usually named sender).

- (void) buttonPress:(id)sender;

Within the method call, sender should be the button in your case, allowing you to read properties such as it's name, tag, etc.


If you need to distinguish between multiple buttons, then you could mark your buttons with tags like this:

[downbutton addTarget:self action:@selector(buttonPress:) forControlEvents:UIControlEventTouchUpInside];
downButton.tag = 15;

In your action delegate method you can then handle each button according to its previously set tag:

(void) buttonPress:(id)sender {
    NSInteger tid = ((UIControl *) sender).tag;
    if (tid == 15) {
        // deal with downButton event here ..
    }
    //...
}

UPDATE: sender.tag should be a NSInteger instead of a NSInteger *

Tags:

Ios

Uibutton