理解委托代理

原文链接:http://www.mamicode.com/info-detail-1090443.html

很多Object-c自带的类中都设置了代理属性。

如果需要使用这些类有时就需要实现这些方法。

上面链接中解释了使用委托代理实现页面传值的原理,我是这样理解的:

1、我们可以把第二个页面中的代码看作UItextField类(B类),我们在B中声明了一个协议,和一个方法名(这个方法我们会在使用它的类中根据需求去实现):

@protocol myDelegete <NSObject>

- (void)sendMessage:(NSString*)message;

@end

2、声明了一个id类型的名为delegate属性,格式如下:

@property (nonatomic , assign)id<myDelegete> delegate;

3、因为是要把B类对象的数据传到A类,所以我们还需要实现一个赋值操作:

1 - (void)leftButtonAction:(UIBarButtonItem *)sender{
2     [self.navigationController popViewControllerAnimated:YES];
3     //代理传值第六步:把B页面的一个text内的值作为参数传出去,后面会提到。
4     [self.delegate sendMessage:self.secondView.textField.text];
5 }

综上所述:声明协议、创建一个delegate(类似C指针的参数delegate,作为两个类之间传递信息的桥梁)、赋值。这三部是B需要做的事。

虾面介绍A需要做的:

1、首先是表忠心、A会遵守这个协议,因此需要先声明自己会遵守:

@interface RootViewController : UIViewController <myDelegete>

 

2、表完了忠心,就得落实,也就是实现代理方法:“我答应会做,但是具体怎么做,得听我的。”

1 - (void)sendMessage:(NSString *)message{
2     self.rootView.textField.text = message;
3 }

3、是时候拉出来练练了,设置好代理,剩下的顺其自然吧:

1 - (void)rightButtonAction:(UIBarButtonItem *)sender{
2     SecondViewController *secondVC = [[SecondViewController alloc]init];
3     secondVC.sendMessage = self.rootView.textField.text;
4     [self.navigationController pushViewController:secondVC animated:YES];
5     //代理传值第四步
6     secondVC.delegate = self;
7 }

 

转载于:https://www.cnblogs.com/iosundersunshine/p/5281651.html

1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值