iOS 协议传值
2013-09-29 16:43
232 查看
协议传值(作为回调比较实用)
如果单单是一个页面跳转传值的话 直接用属性来传值就很快 A--->B
好比说 A 跳转到 B 并且传值 在A页面就直接 b.property = @”hello“就直接传过去了
但是 如果是 A跳转到B 然后 在B页面操作完后 B的数值传到A(回调) 那这就不能用上面那样了 这里的话用协议就很好用了 A---->B---->A
举个例子:
好比说 我在第一个页面是通讯录信息列表
然后我点击添加按钮
弹出一个页面
[selfpresentViewController:vcanimated:YEScompletion:nil];
在第二个页面添加数据 添加完成后
就返回到第一个页面
[selfdismissViewControllerAnimated:YEScompletion:nil];
这时候用协议把数值回调到第一个页面就很方便了
个人理解:
A:
希望别人传来数值(叫别人做事) 这边接收的话 那就在该类中声明协议 在协议方法里面得到数值
//要得到(侧重回调)数据的话就声明协议
@interface ViewController :UIViewController<changeProtocolDelegate>
//(实现协议的方法的时候 得到回调的数据)
-(void)change_Value:(NSString *)value
{
self.myLabel.text =value;
NSLog(@"%@",value);
}
B:
要给别人传值(帮别人做事)就声明代理属性
//要给别人传值
就声明一个代理属性
@interface changeViewController :UIViewController
@property(retain,nonatomic)id<changeProtocolDelegate>delegate;
传值
//帮别人做事
(传一个数值 )
[self.delegatechange_Value:self.txt.text];
A---->B----->A一个回调过程
代码
第二个页面
代码下载地址:http://download.csdn.net/detail/aa741649143/6339189
如果单单是一个页面跳转传值的话 直接用属性来传值就很快 A--->B
好比说 A 跳转到 B 并且传值 在A页面就直接 b.property = @”hello“就直接传过去了
但是 如果是 A跳转到B 然后 在B页面操作完后 B的数值传到A(回调) 那这就不能用上面那样了 这里的话用协议就很好用了 A---->B---->A
举个例子:
好比说 我在第一个页面是通讯录信息列表
然后我点击添加按钮
弹出一个页面
[selfpresentViewController:vcanimated:YEScompletion:nil];
在第二个页面添加数据 添加完成后
就返回到第一个页面
[selfdismissViewControllerAnimated:YEScompletion:nil];
这时候用协议把数值回调到第一个页面就很方便了
个人理解:
A:
希望别人传来数值(叫别人做事) 这边接收的话 那就在该类中声明协议 在协议方法里面得到数值
//要得到(侧重回调)数据的话就声明协议
@interface ViewController :UIViewController<changeProtocolDelegate>
//(实现协议的方法的时候 得到回调的数据)
-(void)change_Value:(NSString *)value
{
self.myLabel.text =value;
NSLog(@"%@",value);
}
B:
要给别人传值(帮别人做事)就声明代理属性
//要给别人传值
就声明一个代理属性
@interface changeViewController :UIViewController
@property(retain,nonatomic)id<changeProtocolDelegate>delegate;
传值
//帮别人做事
(传一个数值 )
[self.delegatechange_Value:self.txt.text];
A---->B----->A一个回调过程
代码
#import <UIKit/UIKit.h> #import "changeViewController.h" #import "changeProtocolDelegate.h" //要得到(侧重回调)数据的话 就声明协议 @interface ViewController : UIViewController<changeProtocolDelegate> @property (retain, nonatomic) IBOutlet UILabel *myLabel; - (IBAction)changAction:(id)sender; @end
#import "ViewController.h" @interface ViewController() @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated. } - (void)dealloc { [_myLabel release]; [super dealloc]; } //(实现协议的方法的时候 得到回调的数据) -(void)change_Value:(NSString *)value { self.myLabel.text =value; NSLog(@"%@",value); } - (IBAction)changAction:(id)sender { changeViewController *vc = [[changeViewController alloc] init]; vc.delegate = self; [self presentViewController:vc animated:YES completion:nil]; // [vc release]; } @end
第二个页面
#import <UIKit/UIKit.h> #import "changeProtocolDelegate.h" #import "ViewController.h" //要给别人传值 就声明一个代理属性 @interface changeViewController : UIViewController @property(retain,nonatomic)id<changeProtocolDelegate>delegate; @property (retain, nonatomic) IBOutlet UITextField *txt; - (IBAction)changeAction:(id)sender; @end
#import "changeViewController.h" @interface changeViewController () @property(retain,nonatomic)ViewController *vc; @end @implementation changeViewController - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; if (self) { // Custom initialization } return self; } - (void)viewDidLoad { [super viewDidLoad]; // [vc.delegate changeValue:@"ddd"]; // Do any additional setup after loading the view from its nib. } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated. } - (void)dealloc { [_txt release]; [_delegate release]; [super dealloc]; } - (IBAction)changeAction:(id)sender { //帮别人做事 (传一个数值 ) [self.delegate change_Value:self.txt.text]; [self dismissViewControllerAnimated:YES completion:nil]; } @end
代码下载地址:http://download.csdn.net/detail/aa741649143/6339189
相关文章推荐
- iOS 手机网站支付转Native支付(使用WKUIDelegate协议获取url)
- iOS iTunes Connect协议更新导致无法构建新版本
- iOS开发总结——协议代理的认识
- ios正式协议
- iOS 协议中相互引用的处理
- ios-day06-01(UITableView的使用:分组、设置数据源、UITableViewDataSource协议等)
- iOS协议里面可以定义成员变量和属性吗?(刚刚)
- 通过 itms-services 协议,发布或者分享 iOS 应用程序
- 是否遵从某个协议 ios
- IOS征途之三 分类与协议
- [转] iOS --- 基于面向协议MVP模式下的软件设计
- iOS- Apple零配置网络协议Bonjour的使用?
- ios之类目/延展/协议作用
- iOS--协议的入门
- iOS开发中关于继承、扩展和协议的理解
- iOS协议传值封装总结
- iOS开发者程序许可协议
- iOS开发者程序许可协议之简单介绍
- iOS键盘协议之一UITextFieldDelegate
- iOS --- 协议部分(swift2.3)