Я недавно сделал приложение, и у меня была такая же ситуация, но я нашел другой способ ее решить, поэтому решил поделиться своим решением с людьми, которые могут быть в такой же ситуации.
Я попробуючтобы объяснить, что я сделал с контекстом этого вопроса:
Я добавил тег к button
и связал его с одной из функций, которые button
должен вызывать (aMethodShow:
например).
button
всегда вызывают одну и ту же функцию (например, callSpecificFunc:
).callSpecificFunc:
вызывает функцию aMethodShow:
или aMethodHide
в соответствии с текущим тегом button
.
В определенном разделе, в котором button
необходимо вызватьдругую функцию, я изменяю только тег button
.
Примерно так:
NSInteger tagOne = 1000; //tag associated with 'aMethodShow' func
NSInteger tagTwo = 1001; //tag associated with 'aMethodHide' func
button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[button addTarget:self action:@selector(callSpecificFunc:) forControlEvents:UIControlEventTouchDown];
[button setTitle:@"Show View" forState:UIControlStateNormal];
button.frame = CGRectMake(80.0, 210.0, 160.0, 40.0);
[view addSubview:button];
...
// in some part of code, if we want to call 'aMethodShow' function,
// we set the button's tag like this
button.tag = tagOne
...
//Now, if we want to call 'aMethodHide', just change the button's tag
button.tag = tagTwo
...
-(void) callSpecificFunc:(UIButton*)sender
{
NSInteger tagOne = 1000;
NSInteger tagTwo = 1001;
if([sender tag] == tagOne){
//do whatever 'aMethodShow' does
}else {
//do whatever 'aMethodHide' does
}
}
Конечно, его можно применять для более чем 2 функций:)