码迷,mamicode.com
首页 > 其他好文 > 详细

代理一般的设计方法以及步骤(个人笔记)

时间:2015-07-08 00:26:00      阅读:90      评论:0      收藏:0      [点我收藏+]

标签:

代理的一般设计步骤:(假设控件名为: CJTabBar )

1、创建一个代理的协议,协议名称为:控件名+Delegate  : CJTableDelegate  (由于要多个文件共享,所以得创建在.h,中)

2、定义代理方法(在CJTabBar.h 中)

  1.一般都定义为@optional

  2.代理方法名都以控件名开头

  3.代理方法至少有一个参数,将本控件传递出去

3、设置代理对象(在需要监听的控制器中实现)()

  1.遵守协议 <CJTableDelegate>

  3.在需要监听出,实现例如 : myTabBar.delegate=self;

  2.在代理对象实现协议里面的方法

 

 

实例理解:

例如:在一个 自定义 tabBarView 中发生了按钮的点击事件,在 viewController 中需要得到这个点击事件:

1、在CJTabBar.h 中实现如下:

@class CJTabBar; // 由于用到 CJTabBar ,则需要 @class 一下

@protocol  CJTabBarDelegate <NSObject> // 创建一个协议
@optional
// 规范:以类名开头
- (void)tabBar:(CJTabBar *)tabBar didSelectButtonFrom:(NSInteger)from to:(NSInteger)to;
@end

@interface CJTabBar : UIView
@property(nonatomic,weak)  id <CJTabBarDelegate> delegate; // 创建一个别人可以使用的代理控件
@end

2、然后实现事件的监听,并且通知代理

/**
 *  监听按钮点击
 *
 *  @param button 
 */
- (void)buttonClick:(CJButton *)button
{
    // 通知代理
    if ([self.delegate respondsToSelector:@selector(tabBar:didSelectButtonFrom:to:)]) { // 注意:所有的代理实现之前都必须调用此方法,用于判断代理是否存在,因为定义了代理为@optonal,有可能没有实现,只有代理方法有实现了才能去实现代理的通知
        [self.delegate tabBar:self didSelectButtonFrom:self.buttonSelected.tag to:button.tag];
    }

}

3、在需要实现代理的地方监听代理

  1.得先遵守代理协议

@interface CJTabBerController() <CJTabBarDelegate>

@end

  2.实现代理的监听

    // 添加自己的 tabber
    CJTabBar *myTabBar= [[CJTabBar alloc] init];
    myTabBar.delegate = self;

  3.监听完之后,拿到代理的方法,实现得到代理需要执行的事情

#pragma mark CJTabBar 代理方法
- (void)tabBar:(CJTabBar *)tabBar didSelectButtonFrom:(NSInteger)from to:(NSInteger)to
{
    // 选中最新的控制器
    self.selectedIndex = to;
}

 

代理一般的设计方法以及步骤(个人笔记)

标签:

原文地址:http://www.cnblogs.com/cjt5132/p/4628732.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!