iOS 页面之间的传值总结

iOS 页面之间的传值总结

 

1、属性传值

(1): 属性传值第一步需要用到什么类型就定义什么样的属性

(2): 从上一个页面到一个页面的选中方法里面将要传的值传到来(上一个页面)备注:这种方法只适用于上一个页面推到下一个页面。

如:MainViewController与SecondViewController两个视图控制器,点击MainViewController中的按钮将跳转到SecondViewController视图,同时想要传递一个值过去。这时可以利用属性传值。

首先SecondViewController视图中需要有一个属性用来 存储传递过来的值:

@property(nonatomic,retain) NSString *firstValue ;//属性传值

然后MainViewController视图需要引用SecondViewController视图的头文件,在视图中的按钮点击事件中,通过SecondViewController的对象将需要传递的值存在firstValue中:

(void)buttonAction:(UIButton *)button

{

SecondViewController *second =

[[SecondViewController alloc]init];//用下一个视图的属性接受想要传过去的值,属性传值

second.firstValue = _txtFiled.text;

[self.navigationControllerpushViewController:second animated:YES];

}

页面跳转之后,就能在SecondViewController视图中,通过存值的属性,取用刚才传递过来的值:

//显示传过来的值[_txtFiledsetText:_firstValue];//firstValue保存传过来的值

2、通知传值

通知中心
NSNotificationCenter提供了一种更加解耦的方式。最典型的应用就是任何对象对可以发送通知到中心,同时任何对象可以监听中心的通知。
发送通知的代码如下:

[[NSNotificationCenterdefaultCenter]     postNotificationName:@”myNotificationName”    object:broadcasterObject];
注册接收通知的代码如下:

[[NSNotificationCenterdefaultCenter]     addObserver:listenerObject     selector:@selector(receivingMethodOnListener:)     name:@”myNotificationName”    object:nil];
注册通知的时候可以指定一个具体的广播者对象,但这不是必须的。你可能注意到了defaultCenter。实际上这是你在应用中会使用到的唯一的中心。通知会向整个应用开放,因此只有一个中心。
同时还有一个NSDistributedNotificationCenter。这是用来应用间通信的。在整个计算机上只有一个该类型的中心。
优点: 通知的发送者和接受者都不需要知道对方。可以指定接收通知的具体方法。通知名可以是任何字符串。
缺点: 较键值观察需要多点代码。在删掉前必须移除监听者。不能传大量数值,只能让谁去做什么事。

3、代理协议传值

(1)、协议(protocol),就是使用了这个协议后,必须按照协议规定的内容来处理事情,协议中要求的方法必须实现(@optional的方法除外)。

protocol是一种语法,它提供了一个很方便的、实现delegate模式的机会。

定义protocol如下:

1.  @protocol ClassBDelegate<NSObject>

2.  - (void)methodOne;

3.  @optional

4.  - (void)methodTwo:(NSString *)value;

5.  @end

定义了一个ClassB的协议,这个协议中包含两个方法,其中methodTwo为可选的。

在ClassA的头文件(ClassA.h)中实现这个协议,如下代码:

1.  @interface ClassA<ClassBDelegate>

2.  @end

在ClassA的实现文件(ClassA.m)中实现ClassBDelegate的两个方法,其中methodTwo可以不实现,如下:

1.  - (void)methodOne{

2.      // 具体实现内容

3.  }

4.

5.  - (void)methodTwo:(NSString *)value{

6.      // 具体实现内容

7.  }

(2)、代理(delegate),顾名思义就是委托别人办事,当一件事情发生后,自己不处理,让别人来处理。

delegate和protocol没有关系。delegate本身是一种设计模式。是把一个类自己需要做的一部分事情,让另一个类(也可以就是自己本身)来完成。

在ClassB的头文件(ClassB.h)中定义一个代理如下:

1.  @interface ClassB 
2.  @property (nonatomic, unsafe_unretained) id<ClassBDelegate> delegate; 
3.  @end 

这样,当我们在ClassB的实现文件(ClassB.m)中遇到想让别的类(如 ClassA)处理的问题时,就可以这样

1.  [self.delegate methodOne]; 
2.  [self.delegate methodTwo:@"需要传递的值"]; 
时间: 2024-12-24 21:04:47

iOS 页面之间的传值总结的相关文章

IOS 页面之间的传值(主讲delegate)

IOS的Delegate,通俗一点说就是页面之间的传值. 总结一下现在知道的IOS页面之间传值的方式有三种 1.使用NSNotification发送通知的传值 主要是通过NSNotificationCenter发送一个通知,他不知道要把值传给谁,当监听的页面收到通知消息,才会获取到消息. 2.是利用属性来传值,我主要是用到A->B中A页面要跳转到B页面,也就把B中需要A的参数通过preparFroSegue方法从A传给B 3.通过NSUserDefault来传值,其主要思想是把值写到本地化的一个

MUI APP关于页面之间的传值,plusready和自定义事件

最近在用MUI开发这个APP,发现有时候这个plusready不起作用,表现在,这个页面如果重复打开,这个plusready就进不去,然后上一个页面传过来的值,就没法接收了.这个经过MUI官方确认,是有可能发生的,所以,这里面的话,就需要通过自定义事件,来确保这个值能正确传递. 首先,我先演示一下,通常我们页面之间的传值的方法,如下: 参数生成页面: mui.openWindow({ id: 'lightMapMain.html', url: 'lightMapMain.html', show:

iOS delegate 实现页面之间的传值

最近刚刚接触ios开发,也没有一本好的书可以阅读,所有的功能都只能靠自己的摸索实现.这两天在做多个页面之间的跳转和传值问题, 页面跳转看我另一篇文章http://blog.csdn.net/xiaotanyu13/article/details/7711954 现在将用delegate来传值 一开始看网上的资源有些看不懂,总感觉很高深的样子 后来一想,实际上delegate传值的实质就是: 比如右AB两个页面,A想要传值给B ,就只要先在A中得到B的指针,然后将想要传的值赋给B,之后跳转, 话不

如何实现两个页面之间进行传值

参考地址:http://blog.csdn.net/hlk_1135/article/details/52809468 B/S页面间通信 HTTP是无状态的协议.Web页面本身无法向下一个页面传递信息,如果需要让下一个页面得知该页面中的值,除非通过服务器.因此,Web页面保持状态并传递给其它页面,是一个重要的技术. Web页面之间传递数据,是Web程序的重要功能 在HTTP协议中一共有4种方法来完成这件事情: 1)URL传值:2)表单传值:3)Cookie方法:4)Session方法: 一.UR

struts2怎么实现页面到页面之间的传值?

我要实现一个产品订购的功能,在浏览产品的时候通过点击一个订购的链接,跳转到提交订单的页面,在跳转的同时要把浏览的产品的名称和型号传到提交订单的页面,并且把这里的订单类的产品名称和型号的表单域里赋上传递过来的值,因为只用到两个值,不想通过Action去操作,只涉及页面之间的值传递... 我是这样做的: 在浏览产品页面有:<a href='<s:url value="orderList_add.jsp" > <s:param name="productNa

项目分享三:页面之间的传值

一.回调函数的使用 我们首先来看一下,页面间传值的一个经典例子,列表页与明细页之间的传值,如下面二张图所图.在列表页点击评价晒单,进入评价晒单页面,当用户在该页面完成操作后,列表页对应的选项,相应地改为“已评价".那么这个是怎么实现的呢?在这个案例里面,使用的是 回调函数 ,我们来看一下相关的代码. 下面这段代码,是列表页的代码,当用户点击”评价晒单“按钮时,打开评价晒单详细页.关键点在于 evaluatePage['submited'] 这个回调函数. evaluate = (item) =&

iOS 页面跳转传值,属性传值,代理传值,代码块传值,单例传值,通知传值

有时候我们在页面跳转的时候回传递相应的参数,如,你想把在第一个页面的文本框里的内容显示在第二个文本框中,或者你又想把第二个文本框中的内容改变之后到第一个页面的文本框中,所有,这个时候我们就要用到页面跳转传值 1.属性传值(正向传值) 属性传值是正向传值,只可以从前面一个页面传递到第二个页面,不可以从第二个页面传递到第一个页面 2.代理传值(逆向传值) 代理传值是逆向传值 代理传值步骤 代理传值 适用于 反向传值 1.1 创建协议 及协议方法 在反向传值的页面(SecondViewControll

静态页面之间如何传值

一:JavaScript静态页面值传递之URL篇 能过URL进行传值.把要传递的信息接在URL上. 例子: 参数传出页面Post.htm—> <input type="text" name="username"> <input type="text" name="sex"> <input type="button" value="Post"> &

window.open()页面之间函数传值

项目中遇到的问题,使用window.open()开一个页面之后,cookie会消失,所以无法一键切肤不管作用,解决方案如下: window.open()总结: window.open("sUrl","sName","sFeature","bReplace"); sUrl:可选项.字符串(String).指定要被加载的HTML文档的URL地址.假如无指定值,则about:blank的新窗口会被显示. sName:可选项.字符串(