UI初级--代理模式

@UI初级之代理模式

在UI设计中,有一种方便的设计模式--代理模式,通常人们创建一种协议,然后在协议中会有协议特有的方法,这种时候就要设置代理来遵守协议,并且让代理来实现协议中的方法,这样就好比雇佣了一个帮手来帮助你实现和操作一些工作,可以有效的进行工程的操作和实现.

@举例创建一个协议

@class CustomView;//CustomView是新建的一个UIView的视图类

@protocol CustomViewDelegate <NSObject>

//下面是需要实现的协议方法

-(void)viewTouchBegan:(CustomView *)view;

-(void)viewTouchMove:(CustomView *)view;

-(void)viewTouchEnd:(CustomView *)view;

@end

//设置一个代理的属性,使代理delegate遵守协议CustomViewDelegate

@property (nonatomic,assign)id<CustomViewDelegate>delegate;

//以下为利用代理来实现协议方法(在一个视图控制器中定义的方法,利用代理协议)

-(void)viewTouchBegan:(CustomView *)view

{

    NSLog(@"%s,%d",__FUNCTION__,__LINE__);

    _testView.backgroundColor = [UIColor yellowColor];

    

}

-(void)viewTouchMove:(CustomView *)view

{

    NSLog(@"%s,%d",__FUNCTION__,__LINE__);

    _testView.backgroundColor = [UIColor greenColor];

    


}

-(void)viewTouchEnd:(CustomView *)view

{

    NSLog(@"%s,%d",__FUNCTION__,__LINE__);

    _testView.backgroundColor = [UIColor blackColor];


}

//通过上面定义的方法来实现代理(上面的_testView.delegate = self)

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event

{

    if ([self.delegate respondsToSelector:@selector(viewTouchBegan:)]) {

        [self.delegate viewTouchBegan:self];

    }

}

-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event

{

    if ([self.delegate respondsToSelector:@selector(viewTouchMove:)]) {

        [self.delegate viewTouchMove:self];

    }

    

}

-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event

{

    if ([self.delegate respondsToSelector:@selector(viewTouchEnd:)]) {

        [self.delegate viewTouchEnd:self];

    }

}

注:

NSLog(@"%s,%d",__FUNCTION__,__LINE__);是用来检测代理实现的过程

@实现检测代理过程的运行截图,图为点击了两次的结果



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值