IOS 页面间传值(属性传值、block传值、代理传值、单例传值、NSNotificaion传值)

原创 2016年06月01日 16:40:30

前言

      iOS页面间跳转,通常涉及到传值问题。正向传值很简单,反向传值可能就有点小麻烦了。本文主要说的是页面间反向传值。

正文

       正向传值的话,通过属性传值来实现,就是A页面push到B页面,在B页面上有一textField用于显示A页面传过来的值。反向传值的话,主要就是A页面push到B页面,然后返回到A页面的时候,改变A页面的背景颜色。

        (一).属性传值(一般只能用于正向传值)

太简单了,就不说 了。

       (二).block传值

    1.首先在B页面.h文件添加执行的block,然后声明一个变量,如下图


    2. 其次在A页面有如下代码:


    3.最后我们在B页面任意调用block变量,像这样:


      (三).代理传值

    1.首先在B页面定义代理方法,如下:


    2.其次给代理赋值,要判断代理存不存在并且代理方法可不可以响应(具体赋值时再调用),如下我是在viewWillDisAppear中赋值的:


   3.然后在A页面要遵守B页面的协议:


   4.最后在A页面为B指定代理,并实现代理方法,如下图:


        (四).单例传值

单例,在这里扮演一个第三方容器的角色。将B页面的值放到这个容器里面,然后再在A页面进行读取。逻辑上就是这样,很简单。

    1.定义一个单例类,增加一个类方法。定义一个属性(表示要传输的值):



    2.在B页面设置要传输的值:


    3.在A页面获取B页面传输过来的值,此时push出去的界面返回的时候viewDidLoad 方法不在调用,所以我们放在viewWillAppear里面来获取B页面传来的值。


   

      (五).通知传值

1.在A页面添加observer (什么时候需要就什么时候添加):


2.添加回调方法:


3.在B页面发送通知:


4.移除observer:


版权声明:本文为博主原创文章,未经博主允许不得转载。

谈谈ios传值方式(属性传值、代理传值、Block传值、单例传值、通知传值、KVC传值)

一下所有的演示由:AViewController 和 BViewController 完成简写(AVC和BVC) 1.属性传值(AVC代码传到BVC代码): AVC 导入  BVC BVC声明...
  • TianYou_Code
  • TianYou_Code
  • 2016年08月03日 10:48
  • 820

iOS传值(属性传值,代理传值,单例传值,通知传值,Block)

属性传值 将A页面所拥有的信息通过属性传递到B页面使用 B页面定义了一个naviTitle属性,在A页面中直接通过属性赋值将A页面中的值传到B页面。 A页面DetailView...
  • u013089934
  • u013089934
  • 2014年01月20日 09:54
  • 1074

iOS 几种传值方式(属性,代理,block,通知,本地存储,单例类)附Demo

本来这次的代码写的比较简单,除了传值方式的选项外,没添加别的控件,只是把传过去的值在控制台打印了一下,但由于把多种传值方式放在了同一篇里面,所以文章会显得过长,文章内容都是直接粘的代码,主要是为了方便...
  • Riven_wn
  • Riven_wn
  • 2015年07月02日 17:02
  • 1451

oc三种传值方式:通知传值,代理传值,block传值

三种传值方式分别为:通知传值,代理传值,block传值 通知和代理的区别(重点) 1,代理可以给sender返回值;通知不能返回值 2,通知代理量小,代理实现步骤比较繁琐 3,通知是一对多/一对无的关...
  • tundraw
  • tundraw
  • 2015年07月16日 22:25
  • 2465

iOS-OC-iOS传值大全(代理传值,block 传值,单例传值,通知传值,属性传值)

1、代理传值 有A \B 两个页面需要将B页面的值传个A 总结: 1.首先应该在b页面写一个协议,协议里有带参数的方法,并创建实现该协...
  • u014220518
  • u014220518
  • 2016年03月21日 11:52
  • 853

关于iOS属性传值为nil的记录

在A页面push到B页面,用属性传值,在B中viewDidLoad打印得到的却是nil(但是在viewWillAppear中是有值的)BViewController * b = [[BViewCont...
  • xgb742951920
  • xgb742951920
  • 2017年02月18日 17:28
  • 1041

iOS 页面间几种传值方式(属性,代理,block,单例,通知

iOS 页面间几种传值方式属性(KVC,KVO),代理(delegate),block,单例,通知(NSNotification)**应用场景:**第二个视图控制器如何获取第一个视图控制的信息 eg:...
  • ChinHan
  • ChinHan
  • 2015年12月03日 09:27
  • 553

iOS传值一属性传值,代理传值

iOS常用传值方法之属性传值,代理传值
  • h643342713
  • h643342713
  • 2016年07月28日 14:32
  • 397

ios 页面之间的传值:属性传值,代理传值,block传值

属性传值最简单,在这里就不陈述了 代理传值: 例如:需要从A类传值到B类中 那么需要在A类中执行的操作有: 1>声明协议 @protocol ADelegate -(void)getString...
  • mm3580652
  • mm3580652
  • 2015年12月08日 21:57
  • 138

1、iOS传值的方法-属性正向传值

一、属性传值         用属性进行传值,将A界面的值传递到B界面。在B类中定义一个变量,然后在A类中跳转到B类中的地方,对需要传递的变量进行赋值。 1、A类中的代码如下: #import "...
  • u010545480
  • u010545480
  • 2015年07月17日 10:00
  • 1520
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:IOS 页面间传值(属性传值、block传值、代理传值、单例传值、NSNotificaion传值)
举报原因:
原因补充:

(最多只允许输入30个字)