码迷,mamicode.com
首页 > 其他好文 > 详细

理解委托代理

时间:2016-03-15 23:18:41      阅读:241      评论: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
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!