IOS中的协议-代理,传值
来源:互联网 发布:app php服务器搭建 编辑:程序博客网 时间:2024/06/05 11:57
来讲,在控制器A->B控制器,传递数据的话比较简单,属性传值就可以
但是当在A->B, B->A之后,B又要传递数据给A,就相当于java中的回调函数(好久不做java了,应该是= =)
那么这个通常我们都叫做数据的逆向传递
数据的逆向传递:
可用的方式:1》代理传值,2》block回调,3》nsdefault(不建议),4》通知(notification)
这里讲的思代理(delegate)
单方消息传递通常用于子视图向主视图传递数据,步骤如下;
1.在子视图中
1.1 定义协议及协议中规定的方法,协议名通常是子视图控制器名+Delegate:
@protocol GameViewControllerDelegate <NSObject>
- (void)gameOverDeliverTimer:(NSString *)timer;
@end
1.2 定义代理:@property (weak, nonatomic) id <GameViewControllerDelegate> delegate;
1.3 子视图中在需要的地方,通过定义的代理调用协议方法,在父视图中没有设置代理的话该方法是不起作用的:
[_delegate gameOverDeliverTimer:_timerLabel.text]
2.在父视图中
2.1 父视图头文件需遵循子视图的协议才有资格申请成为代理:<GameViewControllerDelegate>
2.2 推出子视图控制器前,将自己设置成为子视图的代理,通常是在prepareSegue中实现:
1234 - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
GameViewController *controller = [segue destinationViewController];
controller.delegate = self;
}
2.3 实现协议中的方法:- (void)gameOverDeliverTimer:(NSString *)timer{
NSLog(@"最佳成绩:%@秒", timer);
}
今天先写到代理传值,有空会写block传值的做法 0 0
- IOS中的协议-代理,传值
- IOS中的协议与代理
- ios中的代理与协议(delegate)
- iOS中的协议(Protocol)与代理(Delegate)
- 【IOS沉思录】IOS中的协议Protocol与代理Delegate
- iOS代理与协议
- iOS:分类、协议、代理
- ios 协议和代理
- iOS协议代理
- iOS 代理 协议
- ios协议 与代理
- iOS代理,协议
- iOS 协议代理
- iOS 代理协议
- IOS中的Swift基础(懒加载,代理协议)
- IOS代理协议与委托
- IOS类目、延展、代理协议
- iOS开发 - 协议与代理
- [转]Matlab.Net混编
- SQLite 使用主键,ROWID 及自增列
- 利用CSS预处理技术实现项目换肤功能(less css + asp.net mvc4.0 bundle)
- java8提供的简单函数式接口
- The connection to adb is down, and a severe error has occured. You must restart adb and Eclipse.
- IOS中的协议-代理,传值
- 怎样与领导谈加薪以及谈加薪的技巧
- 几种开源虚拟产品的介绍及性能比较
- Spring在web请求中定义编码(org.springframework.web.filter.CharacterEncodingFilter)
- 应届生求职之旅
- java 多线程与并发
- Android开发之DatePicker控件与TimePicker控件
- 解析angular在github中step-12 利用事件实现缩略图切换效果
- 5分钟快速开发之代码生成器(asp.net mvc4 + easyui + knockoutjs)