关于delegate(代理)总结

stackoverflow  上讲解:http://stackoverflow.com/a/12660523/4563358

 

delegate是将需要处理交给自己的代理。

在自己的对应的类中.h文件中申明对应的delegate

@class CSPopMenu;
@protocol CSPopMenuDelegate <NSObject>
@optional
-(void)PopMenuDimiss:(CSPopMenu *)popMenu;
@end

插入一个可选择的方法,定义一个协议。

@property(nonatomic,weak)id <CSPopMenuDelegate> delegate;

delegate属性设定。

在类的.m文件中

-(void)dismiss
{
    if ([self.delegate respondsToSelector:@selector(PopMenuDimiss:)]) {
        [self.delegate PopMenuDimiss:self];
    }
    [self removeFromSuperview];
  }

调用对应的delegate的方法。

 

要对这个类进行相关的操作,那么首先你要成为这个类的一个代理

 CSPopMenu *menuView= [[CSPopMenu alloc]initWithContentView:menuTableView];
    menuView.popMenuPosition = CSPopMenuBackgroundleft;
    [menuView showRect:CGRectMake(100, 100, 100, 100)];
    menuView.delegate = self;

把当前的类成为对应的类的一个代理。

然后就可以调用代理方法

//设置对应的转动的方向
-(void)PopMenuDimiss:(CSPopMenu *)popMenu
{
    CSMainBtn *mainBtn = (CSMainBtn *)self.navigationItem.titleView;
    [mainBtn setImage:[UIImage imageNamed:@"navigationbar_arrow_down"] forState:UIControlStateNormal];
    
}

得到的效果如图

使得首先右边的箭头改变方向。

 

posted on 2016-07-23 20:43  wyx_cs  阅读(234)  评论(0编辑  收藏  举报