iOS 代理模式


 代理,应该是oc的一个最特别的特色之一了。我们可以看见在好多地方都会运用到它,最直接的例子就是调用tableview的时候,他需要在主界面调用tableview的一些方法,像这个列表里有多少行,每行长什么样子,这个都是实现tableview的代理方法。 

废话不多说,我们看代码,以自定义cell为例子,咱们需要实现其内部一些按钮的方法来吧(于是我找了好久以前的代码,现在我觉得用block还是可以的)

cell.h

#import <UIKit/UIKit.h>
@class SujianTableViewCell;
@protocol SujianTableCellDelegate <NSObject>

-(void)SujianOnClick:(id)sender;

@end

@interface SujianTableViewCell : UITableViewCell
@property (weak, nonatomic) id<SujianTableCellDelegate>delegate;//一般用弱的
@end
cell.m

- (void)SucellOnClick:(id)sender {
    UIButton *bt = sender;
    [self.delegate SujianOnClick:bt]; //这个是代理里面方法的调用
}

我们在tableview里主界面这样写

@interface MainrootViewController ()<SujianTableCellDelegate> //声明

 SujianTableViewCell *cell = [tableview dequeueReusableCellWithIdentifier:cellStr];
                if (cell == nil) {
                    cell = [[SujianTableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellStr];
                    cell.accessoryType = UITableViewCellAccessoryNone;
                    cell.selectionStyle = UITableViewCellSelectionStyleNone;
                }
                cell.delegate = self;  //这里是关键


#pragma mark - SujianDelegate   //然后就可以用cell的方法了
- (void)SujianOnClick:(id)sender
{

}




posted @ 2016-11-28 14:49  赫凯  阅读(38)  评论(0)    收藏  举报