我的应用程序视图中有一个子视图,由本用户指南设置:
http://patientprogrammer.wordpress.com/2012/03/12/re-usable-subviews-in-ios/
我有一个UIView,它是子视图.xib文件的文件所有者,它显示视图:
-(void)awakeFromNib
{
[[NSBundle mainBundle] loadNibNamed:@"headerview" owner:self options:nil];
[self addSubview:self.view_header];
}
现在这个子视图中有一个按钮,我需要点击它。是否可以从父视图UIViewController访问此按钮?
答案 0 :(得分:1)
首先将子视图headerView(headerView.h)中的协议定义为:
@protocol headerViewDelegate;
@interface hearderView : UIView
@property (nonatomic,strong)IBAction UIButton * button1;
@property (nonatomic, assign) id<headerViewDelegate> delegate;
@end
@protocol headerViewDelegate <NSObject>
@optional
-(void)didClickedButton1;
@end
在.m文件中单击按钮的方法
[self.delegate didClickedButton1];
(这表示此视图的委托将执行此didClickedButton1:方法) (如果Viewcontroller在头文件中符合此协议,则可以成为委托)
现在,在父视图控制器中:
一个。符合使用headerViewDelegate 导入“headerview” 把
湾现在你可以把方法didClickedButton1放在父视图控制器中。 单击button1时会调用此方法。
-(void) didClickedButton1{
//do your stuffs here
}
当您单击子视图中的按钮时,在父视图控制器中调用此方法,因为在父视图控制器中我们说我是您的代表(子视图)并且我将要执行此操作你在协议中提到的任务(这里是 - (void)didClickedButton1:方法)。