1、使用SharedApplication,定义一个变量来传递.

2、使用文件,或者NSUserdefault来传递

3、通过一个单例的class来传递

4、通过Delegate来传递。

IOS开发使用委托delegate在不同窗口之间传递数据是本文要介绍的内容,主要是来讲解如何使用委托delegate在不同窗口之间传递数据,具体内容来看详细内容。在IOS开发里两个UIView窗口之间传递参数方法有很多,比如

前面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.  
  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. @end

ios页面间传递参数四种方式的更多相关文章

  1. iOS页面间传值的五种方式总结(Delegate/NSNotification/Block/NSUserDefault/单例)

    iOS页面间传值的方式(Delegate/NSNotification/Block/NSUserDefault/单例) iOS页面间传值的方式(NSUserDefault/Delegate/NSNot ...

  2. JSP页面间传递参数的5种方法

    JSP页面间传递参数是经常需要使用到的功能,有时还需要多个JSP页面间传递参数.下面介绍一下实现的方法. (1)直接在URL请求后添加 如:< a href="thexuan.jsp? ...

  3. [转] 微信小程序页面间通信的5种方式

    微信小程序页面间通的5种方式 PageModel(页面模型)对小程序而言是很重要的一个概念,从app.json中也可以看到,小程序就是由一个个页面组成的. 如上图,这是一个常见结构的小程序:首页是一个 ...

  4. ASP.NET页面间传值的几种方式

    ASP.NET页面间传值的几种方式 1.使用QueryString 使用QuerySting在页面间传递值已经是一种很老的机制了,这种方法的主要优点是实现起来非常简单,然而它的缺点是传递的值是会显示在 ...

  5. jsp页面间传递参数 中文乱码问题(zz)

      jsp页面间传递参数 中文乱码问题 1.传递参数 var url = "*****Test.jsp?param1="+encodeURI(encodeURI(str));//对 ...

  6. jsp 页面间传递参数

    JSP页面间传递参数是经常需要使用到的功能,有时还需要多个JSP页面间传递参数.下面介绍一下实现的方法. (1)直接在URL请求后添加 如:< a href="thexuan.jsp? ...

  7. .net中常用的几种页面间传递参数的方法

    转自:http://www.cnblogs.com/lxshanye/archive/2013/04/11/3014207.html 参考:http://www.cnblogs.com/zhangka ...

  8. PHP页面间参数传递的四种方法详解

    2016-04-16 定义page01.php和page02.php两个php文件,将page01中的内容想办法传递到page02,然后供我们继续使用.------------------------ ...

  9. ionic3+angular5页面间传递参数

    一.从一个页面跳转到另一个页面的方法 1.引入服务 import { NavController } from 'ionic-angular'; 2.初始化 constructor(public na ...

随机推荐

  1. 如何用腾讯云打造一款微视频APP

    版权声明:本文由腾讯云原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/196 来源:腾云阁 https://www.qclo ...

  2. 在centos6.5中安装jdk

    一.下载jdk 下载地址 www.oracle.com,我这次安装的jdk是1.6版本的,以.bin结尾的,名称为 jdk-6u45-linux-i586.bin 二.安装步骤 1.在 /usr目录下 ...

  3. 栅栏 CyclicBarrier

    java.util.concurrent.CyclicBarrier 类是一种同步机制,它能够对处理一些算法的线程实现同步.换句话讲,它就是一个所有线程必须等待的一个栅栏,直到所有线程都到达这里,然后 ...

  4. iOS app性能优化的那些事

     iPhone上面的应用一直都是以流畅的操作体验而著称,但是由于之前开发人员把注意力更多的放在开发功能上面,比较少去考虑性能的问题,可能这其中涉及到objective-c,c++跟lua,优化起来相对 ...

  5. Metro UI(Win 8风格)页面设计小记

    一.Metro风格菜单——简单 HTML <div class="pagina "> <div class="linha"> <d ...

  6. oracle优化原则(二)

    SQL优化原则 二.SQL语句编写注意问题 www.2cto.com 下面就某些SQL语句的where子句编写中需要注意的问题作详细介绍.在这些where子句中,即使某些列存在索引,但是由于编写了劣质 ...

  7. <context:annotation-config> 和 <context:component-scan>的差别

    <context:annotation-config> is used to activate annotations in beans already registered in the ...

  8. Ubuntu 下Eclipse 安装SVN

    如果尚未安装Eclipse,先安装:也可以直接下载Google提供的ADT Bundle. sudo apt-get install eclipse 安装Subversion sudo apt-get ...

  9. 用js创建XMLHttpRequest对象池[转]

    //使用literal语法定义一个对象:XMLHttp var XMLHttp = { //定义第一个属性,该属性用于缓存XMLHttpRequest对象的数组 XMLHttpRequestPool: ...

  10. R中rJava包载入时报错的问题

    今天安装XLConnect包,安装后无法library(XLConnect)载入,看报错问题应该出在rJava上,找到了下面的解决办法: if (Sys.getenv("JAVA_HOME& ...