Хороший подход для такого рода настройки состоит в том, чтобы иметь протокол, включающий сообщение о щелчке, свойство делегата типа id в представлении, содержащем кнопку, и метод в том же представлении, который запускает делегированное сообщение, например so [self.делегат нажал].Событие TouchUpInside связано с этим методом в IB, и родительское представление устанавливает себя в качестве делегата подпредставления и соответствует протоколу.Это может звучать немного сложно, но это определенно правильный способ сделать.
Протокол
@protocol viewWithButtonDelegate
-(void)buttonClicked:(UIButton*)button inView:(UIView*)view;
@end
в интерфейсе подпредставления
@interface viewWithButton {
...
id<viewWithButtonDelegate> delegate;
}
...
@property (nonatomic, retain) id<viewWithButtonDelegate> delegate
-(void)buttonClicked:(id)sender;
...
@end
в реализации подпредставления
-(void)buttonClicked:(id)sender {
if([sender class] == [UIButton class]) {
[self.delegate buttonClicked:(UIButton*)sender inView:self]
}
}
интерфейс контроллера объявлен следующим образом
@interface myController<viewWithButtonDelegate>
и, наконец, в реализации контроллера:
-(void)buttonClicked:(UIButton*)button inView:(UIView*)view {
//do something in response to button clicked
}
надеюсь, это поможет ...