首页 > 其他 > 详细

理解委托代理

时间:2016-03-15 23:17:16      阅读:222      评论:0      收藏:0      [点我收藏+]

原文链接: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 }

 

理解委托代理

原文:http://www.cnblogs.com/iosundersunshine/p/5281651.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!