CommandTabel_代理方法

今天老师带我们又重新复习了一遍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  今天先写到这里,俺要继续去学习了, 也不知道大家能不能看懂,如果不是很清楚 可以留言告诉我,希望可以帮助到大家。

-----< 上帝宠儿>

求知若饥,虚心若愚。

时间: 2024-12-15 01:48:55

CommandTabel_代理方法的相关文章

Android模拟器设置网络代理方法

在服务器上启动模拟器的时候加了--http-proxy,但是不起作用.所以搜了下面的方法 四种方法: 一:将网络连接代理设置写入配置数据库 (适合启动模拟器无界面) 1.通过命令行或者通过双击emulatoer可执行文件,打开模拟器 2.在命令行执行adb shell 打开android的控制台 (确保环境变量设置正确,即已经把Android_SDK/tools 添加到了PATH(Linux)/path(Windows)) 3.执行 ls -l /data/data/com.android.pr

mybatis系列笔记(2)---mapper代理方法

mapper代理方法 在我们在写MVC设计的时候,都会写dao层和daoimp实现层,但假如我们使用mapper代理的方法,我们就可以不用先daoimp实现类 当然这得需要遵守一些相应的规则: (1)Usermapper.java接口必须和Usermapper.xml名称相同,且要在同一目录下: (2)mapper.xml中namespace等于mapper接口的地址 (3)Usermapper.java接口中国的方法名和Usermapper.xml中statement的id一致 <!-- 7综

mybatis学习笔记,mapper代理方法的使用

一.开发人员需要完成的任务: mapper.xml映射文件和mapper.java 二.开发规范 1.在mapper.xml中namespace等于mapper接口地址. 2.mapper.java接口中的方法名和mapper.xml中statement的id一致 3.mapper.java接口中的方法输入参数类型和mapper.xml中statement的parameterType指定的类型一致. 4.mapper.java接口中的方法返回值类型和mapper.xml中statement的re

设置警告框样式为带有两个文本输入的警告框,用于收集用户收货地址和联系电话。并选择合适的代理方法,当警告框上的两输入框有一个为空时限制“购买”按钮点击。

收集购物信息  iOS项目 倒计时:588 步骤 /.panel-heading 项目需求 设置警告框样式为带有两个文本输入的警告框,用于收集用户收货地址和联系电话.并选择合适的代理方法,当警告框上的两输入框有一个为空时限制“购买”按钮点击. #import "TableViewController.h" @interface TableViewController ()<UIAlertViewDelegate> @property (nonatomic, strong)

代理方法的使用条件和XIb具体实现步骤

使?用xib封装?一个view的步骤 1. 新建?一个?文件描述?一个的内部结构假设叫做 新建?一个?自定义的类 ?自定义类需要继承?自系统?自带的继承?自哪个类取决于根对象的 3. 新建类的类名最好跟的?文件名保持?一致?比如类名就叫做 将中的控件 和 ?自定义类的?文件 进?行连线 5. 提供?一个类?方法返回?一个创建好的?自定义屏蔽从加载的过程 提供?一个模型属性让外界传递模型数据 7. 重写模型属性的setter?方法,在这?里将模型数据展?示到对应的?子控件上?面 Delegate的

子类继承父类实现父类的代理方法

父类提供虚函数(OC中称为代理方法),子类继承后实现虚函数来实现特定的功能. 父类方法: NumberCount.h 与 NumberCount.m // // NumberCount.h // YXMWeather // // Created by XianMingYou on 15/2/18. // Copyright (c) 2015年 XianMingYou. All rights reserved. // #import <Foundation/Foundation.h> @clas

iOS开发小功能之八:手势的简单使用(6种)以及代理方法

代码: 1 #import "ViewController.h" 2 @interface ViewController () <UIGestureRecognizerDelegate> 4 @property (weak, nonatomic) IBOutlet UIImageView *imageView; 5 @end 7 @implementation ViewController 8 - (void)viewDidLoad { 9 [super viewDidLo

iOS 设计中关于UIScrollViewDelegate的几个代理方法的简单介绍

在ios设计的过程中,对于UIScrollView这个控件对于开发者而言都不会陌生,在处理UI界面的时候我们经常会用到UIScrollView,既然用到了UIScrollView,那么UIScrollView的几个代理方法就无法避免的被使用了.本文并不介绍UIScrollView的相关属性,就介绍几个代理方法. / 此方法在scrollView滑动时会被调用多次,只要scrollView.contentOffset发生改变就会被调用 / (void)scrollViewDidScroll:(UI

代理方法关键字Action与Fun的使用

代理是一种特殊的,指向某个方法模块所在的地址.一般来讲,那个方法模块,可以是一个普通的方法,更多的时候,是一团匿名的lamda表达式,即一个匿名方法.现在简单理解一下代理的简写方式,即Action关键字. class A { B b = new B(); public delegate string Show(string result); public string Execute() { Show s = new Show(b.MyShow); string str = s.Invoke("