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用来传递值

  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. @interface ValueInputView : UIViewController {
  4. NSObject<UIViewPassValueDelegate> * delegate;
  5. UITextField *_value;
  6. }
  7. @property(nonatomic, retain)IBOutlet UITextField *value;
  8. @property(nonatomic, retain) NSObject<UIViewPassValueDelegate> * delegate;
  9. - (IBAction)buttonClick:(id)sender;
  10. @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. - (IBAction)buttonClick:(id)sender
  10. {
  11. [delegate passValue:self.value.text];
  12. NSLog(@"self.value.text is%@", self.value.text);
  13. [self dismissModalViewControllerAnimated:YES];
  14. }
  15. - (void)didReceiveMemoryWarning {
  16. // Releases the view if it doesn't have a superview.
  17. [super didReceiveMemoryWarning];
  18. // Release any cached data, images, etc. that aren't in use.
  19. }
  20. - (void)viewDidUnload {
  21. [super viewDidUnload];
  22. // Release any retained subviews of the main view.
  23. // e.g. self.myOutlet = nil;
  24. }
  25. /*
  26. // Only override drawRect: if you perform custom drawing.
  27. // An empty implementation adversely affects performance during animation.
  28. - (void)drawRect:(CGRect)rect {
  29. // Drawing code.
  30. }
  31. */
  32. @end

源码下载:http://files.cnblogs.com/likwo/DelegateSample.zip

小结:IOS开发使用委托delegate在不同窗口之间传递数据的内容介绍完了,希望通过本文的学习能对你有所帮助!

IOS开发使用委托delegate在不同窗口之间传递数据的更多相关文章

  1. MFC不同窗口之间传递数据

    问题的由来: 最近在学习串口通信编程,参考的例子大多数都是在一个对话框中同时完成对串口的配置及数据收发的功能.这种方式不太适合于写自己的应用程序(会使得程序界面比较混乱,无法突出程序的重点),因此想让 ...

  2. WinForm 中两个窗口之间传递数据

    方法有很多种,这里介绍项目中使用的两种 一.通过委托+事件的方法进行传值 (点击Form2中的button1按钮,将会把Form2中的textbox.text 传给Form1中的 lable.text ...

  3. C# 窗口间传递数据

    C#两个窗口之间传递数据 1 公用变量值传递 public partial class Form1 : Form //parent form { public string name="&q ...

  4. iOS开发--字典(NSDictionary)和JSON字符串(NSString)之间互转

    iOS开发--字典(NSDictionary)和JSON字符串(NSString)之间互转 1. 字典转Json字符串 // 字典转json字符串方法 -(NSString *)convertToJs ...

  5. PostMessage实现多窗口之间的数据传递

    [本文参考自网络,参考地址:https://blog.csdn.net/lsyyoyo/article/details/38726419] 1.在公共的头文件中添加一个宏定义: #define WM_ ...

  6. PB笔记之窗口之间传递多参数的方法

    messageboxex("警告","确定要把删除房间["+ls_id+"]吗?",question!,yesno!)<>1 t ...

  7. iOS 关于iOS开发中的delegate

    有A.B两个对象,A要完成某件事,想让B帮它做. 这时候,A中就要实例化一个B的对象b,A还要在头文件中声明协议,然后在B中实现协议中对应的方法. 这时候再把A的delegate设置为b,在需要的地方 ...

  8. 【学习总结】iOS中NSNotification、delegate、KVO三者之间的区别与联系?

    在开发ios应用的时候,我们会经常遇到一个常见的问题:在不过分耦合的前提下,controllers间怎么进行通信.在IOS应用不断的出现三种模式来实现这种通信: 1.委托delegation: 2.通 ...

  9. iOS中NSNotification、delegate、KVO三者之间的区别与联系?

    前面分别讲了delegate.notification和KVO的实现原理,以及实际使用步骤,我们心中不禁有个疑问,他们的功能比较类似,那么在实际的编程中,如何选择这些方式呢? 在网上看到一个博客上详细 ...

随机推荐

  1. NGINX: 反向代理 websocket

    参考: [ Using multiple nodes ] [ Nginx 官网 WebSocket proxying ] 关于 websocket 的介绍可以看阮大大的这篇 [ WebSocket 教 ...

  2. 地震(quake)

    地震 题目描述 一场地震毁了 Farmer John 的整个农场.他是个有恒心的人,决定重建农场.在重建了所有 n(1<=n<=400)块田野后,他意识到还得修路将它们连起来.完工后,任两 ...

  3. [bzoj3532][Sdoi2014]Lis——拆点最小割+字典序+退流

    题目大意 给定序列A,序列中的每一项Ai有删除代价Bi和附加属性Ci.请删除若 干项,使得4的最长上升子序列长度减少至少1,且付出的代价之和最小,并输出方案. 如果有多种方案,请输出将删去项的附加属性 ...

  4. linux下检测可用串口并使用minicom打开

    目前使用minicom作为串口软件.但使用过程中,有一点感觉不方便的地方,就是我需要使用多个串口,当使用的不是串口0时,就要手动修改minicom的配置. 于是考虑实现脚本,自动列出当前串口,选择后调 ...

  5. cpu_relax( )-----对自选循环等待(spin-wait loops)操作的优化【转】

    cpu_relax()-----对自选循环等待(spin-wait loops)操作的优化 转自:http://www.doc100.net/bugs/t/173547/index.html 在loc ...

  6. IC卡的传输协议(2)-块传输协议T=1续【转】

    转自:http://bbs.ednchina.com/BLOG_ARTICLE_172025.HTM (3)容错操作 先来看一下容错的规则定义. * 复位应答后,第一个数据块是由终端发往IC卡的,而且 ...

  7. 超详细saltstack安装部署及应用

    1.环境准备 准备两台虚拟机 主机名 ip role linux-node1 10.0.0.7 master linux-node2 10.0.0.8 minion 在节点1上安装 master 和 ...

  8. java中Math.abs(-2147483648)的返回值应该是什么?

    我觉得这是一个非常有意思的问题,Math.abs(-2147483648)的返回值应该是什么? java计算结果 为什么没有得到正数结果呢? 首先我们先看下java区分整数正负的原理.在二进制的情况下 ...

  9. hdu 3666(差分约束,手动栈解决超时问题)

    THE MATRIX PROBLEM Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Other ...

  10. 前端通过form表单构造带参数url

    <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...