View点击事件的代理应用:当在View层添加一个按钮或其它的View使其具备点击的作用,通常的处理是就是把点击的代码放到controller中来,这样显得牵强,既然View层是单独Controller的单独存在的,那么它的点击事件也是应该封装在View层,而我们调用点击事件的时候只要调用点击的方法即可。下面是我的做法,不喜勿喷。
1、在.h自定义view上声明协议
@protocol MyViewDelegate <NSObject>
//@required //必须执行的方法
//- (void)clickEvent:(UIButton *)sender;
@optional //可选择执行的方法
- (void)clickEvent:(UIButton *)sender;
@end
@interface MyView : UIView
@property (nonatomic,strong) UIButton *myButton;
//声明代理属性
@property (nonatomic, weak) id<MyViewDelegateDelegate> delegate;
@end
2、在.m文件
//view的子类视图响应的方法(比UIButton的点击事件)
- (void)test{
if ([self respondsToSelector:@selector(test)]) {
[self.delegate clickEvent:self.myButton];
}
}
3、在controller.m文件中
@interface ViewController ()<MyViewDelegate>
@property (nonatomic,strong) MyView*myView;
@end
4、遵守协议
self.myView.delegate = self;
5、执行方法
- (void)clickEvent:(UIButton *)sender{
//点击了
}
若有帮助到的同学,点个喜欢!
网友评论