标签:
今天老师带我们又重新复习了一遍block,对于block的应用场景,内存管理还有block的语法,以前学习的时候感觉很难,听的懵懵懂懂,今天老师带着又复习一遍以后,感觉又懂了不少, 下面我就来分享一下今天我个人听明白的知识点。
CommandTabel可以用代理的方法实现,也可以用block, 先说说代理吧
代理其实就是一些方法列表,让你实现必须的方法还有可选的方法
1.使用CMDTabel自己写一个代理,并且写出里面的方法
1)创建一个继承于NSObject的类,命名为CMDTabel;
2).h 声明代理属性
||代理的名字(注:看看任意一个delegate就可以观察到 @protocol 某某的代理 <NSObject> )
@protocol CMDTableDatasource <NSObject>
//设置的代理方法,其中设置的代理方法可以规定谁是必须实现的 谁是选择实现的
//@required
观察其他的代理你会发现 系统的方法都会表明谁的代理--- CMDTable:(CMDTabel*)table
//返回行数
- (NSInteger)CMDTableNumberOfRows:(CMDTabel*)table;
//返回某一行的数据
- (NSString *)CMDTable:(CMDTabel*)table textForRowAtIndex:(NSInteger)row;
@end
3)设置数据的代理
// 签署名字为CMDTableDatasource的代理方法,类似与
/**
* @interface ViewController : UIViewController<UIPickerViewDataSource>
**/
@property(nonatomic,weak)id<CMDTableDatasource>dataSource;
4) 开放一个类方法 方便外部调用
- (void)reloadTabel;
5) .m文件
实现方法的作用
// 更新table
- (void)reloadTabel{
// 获取行数
NSInteger number = [_dataSource CMDTableNumberOfRows:self];
for (int i = 0; i <number; i++) {
NSLog(@"%@",[_dataSource CMDTable:self textForRowAtIndex:i]);
}
}
2.创建一个继承于NSObject的类 命名为Controller。
1)签署代理协议
.h
@interface Controller : NSObject<CMDTableDatasource>
{
存放数据的数组
NSArray* dataList;
//数据展示容器
CMDTabel *tableView;
}
开放的实例方法,方便外部调用
-(void)viewDidLoad;
3.实现代理方法
#pragma mark CMD的代理方法
//返回行数
- (NSInteger)CMDTableNumberOfRows:(CMDTabel*)table {
return dataList.count;
}
//返回某一行的数据
- (NSString *)CMDTable:(CMDTabel*)table textForRowAtIndex:(NSInteger)row{
return [dataList objectAtIndex:row];
}
4.展示数据
-(void)viewDidLoad{
dataList = @[@"第一页",@"第一页",@"第一页",@"第一页",@"第一页",@"第一页",@"第一页"];
tableView = [[CMDTabel alloc]init];
// tableView.deledate = self;
// ||
tableView.dataSource = self;
[tableView reloadTabel];
}
刚开始使用的时候不明白代理是怎么自己编写的,后边的签署代理的时候 也不知道签署的是代理的名字。其实有一句
tableView.dataSource = self; 就相当于
tableView.deledate = self;
。
自己编写代理方法的时候要参考系统的代理方法,谁的代理方法要注明清除
例如:(系统的tableView)
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath;
我们自己编写的时候也要注意
- (NSString *)CMDTable:(CMDTabel*)table textForRowAtIndex:(NSInteger)row;
OK 今天先写到这里,俺要继续去学习了, 也不知道大家能不能看懂,如果不是很清楚 可以留言告诉我,希望可以帮助到大家。
-----< 上帝宠儿>
求知若饥,虚心若愚。
标签:
原文地址:http://www.cnblogs.com/jiao930131/p/4761598.html