iOS (页面间传值)协议和代理的使用 protocol delegate

最近搜关于协议和代理使用相关内容的时候发现雷同太多,这篇是很早前整理的我已经记不清是自己修改过了的,还是直接在往上复制下来的,不过感觉介绍还是蛮细致的

1、首先定义个一委托UIViewPassValueDelegate用来传递值

1. @protocol UIViewPassValueDelegate 
2. - (void)passValue:(NSString *)value; 
3. @end 

这个protocol 就是用来传递值

2、在窗口1的头文件里,声明delegate

1. #import <UIKit/UIKit.h> 
2. #import "UIViewPassValueDelegate.h" 
3. @interface DelegateSampleViewController : UIViewController <UIViewPassValueDelegate> 
4. {  
5.     UITextField *_value; 
6. }  
7. @property(nonatomic, retain) IBOutlet UITextField *value; 
8. - (IBAction)buttonClick:(id)sender; 
9. @end 

并实现这个委托

1. - (void)passValue:(NSString *)value 
2. {  
3.   self.value.text = value;  
4.     NSLog(@"the get value is %@", value); 
5. } 

button的Click方法,打开窗口2,并将窗口2的delegate实现方法指向窗口1。

1. - (IBAction)buttonClick:(id)sender 
2. {  
3.     ValueInputView *valueView = [[ValueInputView alloc] initWithNibName:@"ValueInputView" bundle:[NSBundle mainBundle]]; 
4.     valueView.delegate = self;  
5.     [self setModalTransitionStyle:UIModalTransitionStyleCoverVertical]; 
6.     [self presentModalViewController:valueView animated:YES]; 
7. } 


第二个窗口的实现

.h 头文件

1. #import <UIKit/UIKit.h> 
2. #import "UIViewPassValueDelegate.h" 
3.  
4. @interface ValueInputView : UIViewController { 
5.  
6.     NSObject<UIViewPassValueDelegate> * delegate;  
7.     UITextField *_value; 
8. }  
9. @property(nonatomic, retain)IBOutlet UITextField *value; 
10.@property(nonatomic, retain) NSObject<UIViewPassValueDelegate> * delegate;  
11.- (IBAction)buttonClick:(id)sender; 
12.@end 

.m实现文件

1. #import "ValueInputView.h" 
2. @implementation ValueInputView 
3. @synthesize delegate; 
4. @synthesize value = _value;  
5. - (void)dealloc { 
6.     [self.value release]; 
7.     [super dealloc]; 
8. }  
9.  
10.- (IBAction)buttonClick:(id)sender 
11.{  
12.    [delegate passValue:self.value.text]; 
13.    NSLog(@"self.value.text is%@", self.value.text); 
14.    [self dismissModalViewControllerAnimated:YES];     
15.    
16.}  
17.- (void)didReceiveMemoryWarning { 
18.    // Releases the view if it doesn't have a superview. 
19.    [super didReceiveMemoryWarning]; 
20.     
21.    // Release any cached data, images, etc. that aren't in use. 
22.}  
23. 
24.- (void)viewDidUnload { 
25.    [super viewDidUnload]; 
26.    // Release any retained subviews of the main view. 
27.    // e.g. self.myOutlet = nil;  
28.}  
29. 
30./*  
31.// Only override drawRect: if you perform custom drawing. 
32.// An empty implementation adversely affects performance during animation. 
33.- (void)drawRect:(CGRect)rect { 
34.    // Drawing code. 
35.}  
36.*/  
37.@end 


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值