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. phpAdmin 修改密码后拒绝登陆

    phpMyadmin没配置正确,打开 phpMyadmin 目录找到config.inc.php文件,查找到$cfg['Servers'][$i]['password']='';这行,在''中输入你正 ...

  2. 【NOIP1999】邮票面值设计 dfs+dp

    题目传送门 这道题其实就是找一波上界比较麻烦 用一波 背包可以推出上界mx 所以新加入的物品价值一旦大于mx+1,显然就会出现断层,所以可以以maxm+1为枚举上界,然后这样进行下一层的dfs. 这样 ...

  3. 河南省第十届省赛 Plumbing the depth of lake (模拟)

    title: Plumbing the depth of lake 河南省第十届省赛 题目描述: There is a mysterious lake in the north of Tibet. A ...

  4. [bzoj2599][IOI2011]Race——点分治

    Brief Description 给定一棵带权树,你需要找到一个点对,他们之间的距离为k,且路径中间的边的个数最少. Algorithm Analyse 我们考虑点分治. 对于子树,我们递归处理,所 ...

  5. equestAnimationFrame

    export const requestAnimationFrame = (() => { /* istanbul ignore next */ if (!inBrowser) { return ...

  6. guake 3.4发布,支持切分窗口

    guake是一款下拉式终端,美观实用. 近日发布了3.4版本,在3.4版本中支持了切分窗口功能.如图所示,还是比较实用的一个功能. 目前ubuntu仓库中还未更新,需要使用pip安装,或者自行从源码编 ...

  7. Oracle基础 01 表空间 tablespace

    --查看表空间 select * from dba_tablespaces; select * from v$tablespace; select * from dba_data_files; --查 ...

  8. DIV+CSS设置及问题总结

    HTML 中有用的字符实体 注释:实体名称对大小写敏感! 显示结果 描述 实体名称 实体编号   空格     < 小于号 < < > 大于号 > > & ...

  9. [转]C++ 指针和引用

    转自http://www.cnblogs.com/tangxiaobo199181/ 作者:算法生活 微信公众号:算法生活 出处:http://www.cnblogs.com/tangxiaobo19 ...

  10. 某dp题2

    P2401 不等数列 题目描述 将1到n任意排列,然后在排列的每两个数之间根据他们的大小关系插入">"和"<".问在所有排列中,有多少个排列恰好有k ...