IOS开发使用委托delegate在不同窗口之间传递数据
IOS开发使用委托delegate在不同窗口之间传递数据是本文要介绍的内容,主要是来讲解如何使用委托delegate在不同窗口之间传递数据,具体内容来看详细内容。在IOS开发里两个UIView窗口之间传递参数方法有很多,比如
1、使用SharedApplication,定义一个变量来传递.
2、使用文件,或者NSUserdefault来传递
3、通过一个单例的class来传递
4、通过Delegate来传递。
前面3种方法,暂且不说,这次主要学习如何使用通过Delegate的方法来在不同的UIView里传递数据
比如: 在窗口1中打开窗口2,然后在窗口2中填入一个数字,这个数字又回传给窗口1。
窗口1
窗口2
窗口2的结果传递给窗口1
1、首先定义个一委托UIViewPassValueDelegate用来传递值
- @protocol UIViewPassValueDelegate
- - (void)passValue:(NSString *)value;
- @end
这个protocol 就是用来传递值
2、在窗口1的头文件里,声明delegate
- #import <UIKit/UIKit.h>
- #import "UIViewPassValueDelegate.h"
- @interface DelegateSampleViewController : UIViewController <UIViewPassValueDelegate>
- {
- UITextField *_value;
- }
- @property(nonatomic, retain) IBOutlet UITextField *value;
- - (IBAction)buttonClick:(id)sender;
- @end
并实现这个委托
- - (void)passValue:(NSString *)value
- {
- self.value.text = value;
- NSLog(@"the get value is %@", value);
- }
button的Click方法,打开窗口2,并将窗口2的delegate实现方法指向窗口1。
- - (IBAction)buttonClick:(id)sender
- {
- ValueInputView *valueView = [[ValueInputView alloc] initWithNibName:@"ValueInputView" bundle:[NSBundle mainBundle]];
- valueView.delegate = self;
- [self setModalTransitionStyle:UIModalTransitionStyleCoverVertical];
- [self presentModalViewController:valueView animated:YES];
- }
第二个窗口的实现
.h 头文件
- #import <UIKit/UIKit.h>
- #import "UIViewPassValueDelegate.h"
- @interface ValueInputView : UIViewController {
- NSObject<UIViewPassValueDelegate> * delegate;
- UITextField *_value;
- }
- @property(nonatomic, retain)IBOutlet UITextField *value;
- @property(nonatomic, retain) NSObject<UIViewPassValueDelegate> * delegate;
- - (IBAction)buttonClick:(id)sender;
- @end
.m实现文件
- #import "ValueInputView.h"
- @implementation ValueInputView
- @synthesize delegate;
- @synthesize value = _value;
- - (void)dealloc {
- [self.value release];
- [super dealloc];
- }
- - (IBAction)buttonClick:(id)sender
- {
- [delegate passValue:self.value.text];
- NSLog(@"self.value.text is%@", self.value.text);
- [self dismissModalViewControllerAnimated:YES];
- }
- - (void)didReceiveMemoryWarning {
- // Releases the view if it doesn't have a superview.
- [super didReceiveMemoryWarning];
- // Release any cached data, images, etc. that aren't in use.
- }
- - (void)viewDidUnload {
- [super viewDidUnload];
- // Release any retained subviews of the main view.
- // e.g. self.myOutlet = nil;
- }
- /*
- // Only override drawRect: if you perform custom drawing.
- // An empty implementation adversely affects performance during animation.
- - (void)drawRect:(CGRect)rect {
- // Drawing code.
- }
- */
- @end
源码下载:http://files.cnblogs.com/likwo/DelegateSample.zip
小结:IOS开发使用委托delegate在不同窗口之间传递数据的内容介绍完了,希望通过本文的学习能对你有所帮助!
IOS开发使用委托delegate在不同窗口之间传递数据的更多相关文章
- MFC不同窗口之间传递数据
问题的由来: 最近在学习串口通信编程,参考的例子大多数都是在一个对话框中同时完成对串口的配置及数据收发的功能.这种方式不太适合于写自己的应用程序(会使得程序界面比较混乱,无法突出程序的重点),因此想让 ...
- WinForm 中两个窗口之间传递数据
方法有很多种,这里介绍项目中使用的两种 一.通过委托+事件的方法进行传值 (点击Form2中的button1按钮,将会把Form2中的textbox.text 传给Form1中的 lable.text ...
- C# 窗口间传递数据
C#两个窗口之间传递数据 1 公用变量值传递 public partial class Form1 : Form //parent form { public string name="&q ...
- iOS开发--字典(NSDictionary)和JSON字符串(NSString)之间互转
iOS开发--字典(NSDictionary)和JSON字符串(NSString)之间互转 1. 字典转Json字符串 // 字典转json字符串方法 -(NSString *)convertToJs ...
- PostMessage实现多窗口之间的数据传递
[本文参考自网络,参考地址:https://blog.csdn.net/lsyyoyo/article/details/38726419] 1.在公共的头文件中添加一个宏定义: #define WM_ ...
- PB笔记之窗口之间传递多参数的方法
messageboxex("警告","确定要把删除房间["+ls_id+"]吗?",question!,yesno!)<>1 t ...
- iOS 关于iOS开发中的delegate
有A.B两个对象,A要完成某件事,想让B帮它做. 这时候,A中就要实例化一个B的对象b,A还要在头文件中声明协议,然后在B中实现协议中对应的方法. 这时候再把A的delegate设置为b,在需要的地方 ...
- 【学习总结】iOS中NSNotification、delegate、KVO三者之间的区别与联系?
在开发ios应用的时候,我们会经常遇到一个常见的问题:在不过分耦合的前提下,controllers间怎么进行通信.在IOS应用不断的出现三种模式来实现这种通信: 1.委托delegation: 2.通 ...
- iOS中NSNotification、delegate、KVO三者之间的区别与联系?
前面分别讲了delegate.notification和KVO的实现原理,以及实际使用步骤,我们心中不禁有个疑问,他们的功能比较类似,那么在实际的编程中,如何选择这些方式呢? 在网上看到一个博客上详细 ...
随机推荐
- {CodeForces】788E New task && 汕头市队赛SRM06 D 五色战队
D 五色战队 SRM 06 背景&&描述 游行寺家里人们的发色多种多样,有基佬紫.原谅绿.少女粉.高级黑.相簿白等. 日向彼方:吾令人观其气,气成五彩, ...
- [BZOJ3238][Ahoi2013]差异解题报告|后缀数组
Description 先分析一下题目,我们显然可以直接算出sigma(len[Ti]+len[Tj])的值=(n-1)*n*(n+1)/2 接着就要去算这个字符串中所有后缀的两两最长公共前缀总和 首 ...
- NGINX: 配置跨域请求
说明: 内容全部来自 SegmentFault Developer Nginx 配置跨域请求 跨域请求失败, nginx 报错: 403 No 'Access-Control-Allow-Origin ...
- CVE-2016-6662 mysql RCE测试
参考:http://bobao.360.cn/learning/detail/3027.html ,我尝试第一种方法 1.先修改mysql_hookandroot_lib.c里面的反弹地址和端口: # ...
- AE特效-与MAYA的结合、制作音乐舞蹈太极动作
http://blog.sina.com.cn/s/blog_a439a2670101fbkk.html AE特效-与MAYA的结合.制作音乐舞蹈太极动作 (2013-07-24 14:44:12) ...
- bootstrapValidator关于verbose需要优化的地方
开发中需要用到bootstrapValidator的配置verbose:false,达到当前验证不通过不往下在验证的效果 问题: 当前字段需要remote验证时,此配置无效,原因在于remote是异步 ...
- SPOJ - AMR11H
Array Diversity Time Limit: 404MS Memory Limit: 1572864KB 64bit IO Format: %lld & %llu Submi ...
- “pip failed to create process”的问题
增加python -m的方法能完美解决pip,easy_install 安装时报错:“pip failed to create process”的问题,据推测应该是64bit操作系统下会是如此. Wi ...
- centos opera 卸载
/usr/local/bin/uninstall-opera
- JS动态计算移动端rem的解决方案
首先介绍下rem 说起rem就的说px,em: PX为单位 在Web页面初期制作中,我们都是使用“px”来设置我们的文本,因为他比较稳定和精确.但是这种方法存在一个问题,当用户在浏览器中浏览我们制作的 ...