当前位置: 首页>移动开发>正文

iOS 交换两个View的位置 iphone如何页面交换

 

iOS中,页面之间的相互传值分为正向传值和逆向传值两种方法

 

正向传值:A想要传值给B,只要在A中包含B的头文件,并获取到B中.h的属性,在modal或push之前,给B中.h文件中的某属性赋值,即可完成传值

 

本文主要讲述的是逆向传值的几个常用方法:通知传值、代理传值、block传值

 

如图所示:

   

iOS 交换两个View的位置 iphone如何页面交换,iOS 交换两个View的位置 iphone如何页面交换_初始化,第1张

 

 操作流程:

点击控制器A的屏幕,modal到控制器B,然后通过通知/代理/block的方法,给控制器A的UILabel传值,然后再点击控制器B的屏幕,dismiss。

 

 1、通知传值

使用通知从控制器B向控制器A中逆向传值,大概分4步骤

1、必须先有监听者,按照上面图片所示,是控制器A监听通知(获取发布通知的内容),控制器B发布通知(发布通知的内容)

2、拥有监听者,就要移除监听

3、实现监听者中的selector的方法

4、拥有发布者,也就是控制器B

 

具体操作如下: 

第一步:设置监听

按照如上步骤,在控制器A中设置监听者,而设置监听一般只需要设置一次即可,viewDidLoad是控制器加载完成的时候调用的,所以一般是将设置监听者的方法写在viewDidLoad方法中

iOS 交换两个View的位置 iphone如何页面交换,iOS 交换两个View的位置 iphone如何页面交换_头文件_02,第2张

上面的截图中,是在设置监听者

observer:self,表示在当前的控制器中监听

selector:@selector(capturetext:),表示在监听到发布者发布的通知后,执行当前控制器的capturetext:方法,带:是为了获取通知的内容

name

object

 

第二步: 移除监听

在上面将讲过,有监听者,就要有移除监听,移除监听分两种,一种是移除当前页面中的所有通知,另一种是移除当前文件中某通知名称的单个通知

两者二选一即可!!! 两者二选一即可!!! 两者二选一即可!!!

iOS 交换两个View的位置 iphone如何页面交换,iOS 交换两个View的位置 iphone如何页面交换_初始化_03,第3张

 

第三步:实现监听者中的selector的方法

设置监听者的时候,需要设置selector方法,这个方法在设置监听者的页面实现,接收到通知的时候调用的

iOS 交换两个View的位置 iphone如何页面交换,iOS 交换两个View的位置 iphone如何页面交换_赋值_04,第4张

 

在啰嗦一遍:控制器A中有一个UIlabel,在控制器B中想设置控制器A的UIlabel的文字,则在控制器B中发布,以上三步都是在控制器A中实现的,第四部需要到控制器B中实现

 

第四步:设置发布者
在需要逆向传值的页面中发布通知

iOS 交换两个View的位置 iphone如何页面交换,iOS 交换两个View的位置 iphone如何页面交换_头文件_05,第5张

上面的截图中,是在设置发布者

NotificationName:@"theThirdControllerCapturetext",发布的通知名称,需要与监听者中的name相对应
object
userInfo

 

至此,通知的传值方法讲解完毕

 

2、代理传值

使用代理从控制器B向控制器A中逆向传值,大概分7步骤

1、从控制器B的.h文件中使用@class包含本身的类名,然后

设置协议的名称及方法

2、从控制器B的.h文件中设置代理的属性

3、从控制器B的.m文件中使用代理的属性,调用协议的方法,并给参数赋值

4、从控制器A的.m文件中包含控制器B的头文件

5、从控制器A的.m文件中遵守协议名称

6、从控制器A的.m文件中初始化控制器B的对象,并将代理设置为self

7、从控制器A的.m文件中调用控制器B的协议方法,获取到参数的值,进行使用

具体操作如下:

1、从控制器B的.h文件中设置协议的名称及方法

iOS 交换两个View的位置 iphone如何页面交换,iOS 交换两个View的位置 iphone如何页面交换_iOS 交换两个View的位置_06,第6张

 

2、从控制器B的.h文件中设置代理的属性

iOS 交换两个View的位置 iphone如何页面交换,iOS 交换两个View的位置 iphone如何页面交换_头文件_07,第7张

 

3、从控制器B的.m文件中使用代理的属性调用协议的方法,并给参数赋值

iOS 交换两个View的位置 iphone如何页面交换,iOS 交换两个View的位置 iphone如何页面交换_赋值_08,第8张

 

4、从控制器A的.m文件中包含控制器B的头文件

iOS 交换两个View的位置 iphone如何页面交换,iOS 交换两个View的位置 iphone如何页面交换_iOS 交换两个View的位置_09,第9张

 

5、从控制器A的.m文件中遵守协议名称

iOS 交换两个View的位置 iphone如何页面交换,iOS 交换两个View的位置 iphone如何页面交换_初始化_10,第10张

 

6、从控制器A的.m文件中初始化控制器B的对象,并将代理设置为self

 

iOS 交换两个View的位置 iphone如何页面交换,iOS 交换两个View的位置 iphone如何页面交换_iOS 交换两个View的位置_11,第11张

 

7、从控制器A的.m文件中调用控制器B的协议方法,获取到参数的值,进行使用

iOS 交换两个View的位置 iphone如何页面交换,iOS 交换两个View的位置 iphone如何页面交换_赋值_12,第12张

 

至此,代理的传值方法讲解完毕

 

 

3、block传值

 

使用block从控制器B向控制器A中逆向传值,大概分7步骤

1、从控制器B的.h文件中使用@class包含本身的类名

2、从控制器B的.h文件中设置block的属性

3、从控制器B的.m文件中给block赋值

4、从控制器A的.m文件中初始化控制器B的对象,并调用block

具体操作如下:

1、从控制器B的.h文件中使用@class包含本身的类名

iOS 交换两个View的位置 iphone如何页面交换,iOS 交换两个View的位置 iphone如何页面交换_iOS 交换两个View的位置_13,第13张

 

2、从控制器B的.h文件中设置block的属性

 

iOS 交换两个View的位置 iphone如何页面交换,iOS 交换两个View的位置 iphone如何页面交换_iOS 交换两个View的位置_14,第14张

 

3、从控制器B的.m文件中给block中的参数赋值

 

iOS 交换两个View的位置 iphone如何页面交换,iOS 交换两个View的位置 iphone如何页面交换_头文件_15,第15张

 

4、从控制器A的.m文件中初始化控制器B的对象,调用block,获取到参数的值,进行使用

 

iOS 交换两个View的位置 iphone如何页面交换,iOS 交换两个View的位置 iphone如何页面交换_iOS 交换两个View的位置_16,第16张

 打印结果:

iOS 交换两个View的位置 iphone如何页面交换,iOS 交换两个View的位置 iphone如何页面交换_赋值_17,第17张

 

至此,block的传值方法讲解完毕

 

其他还有别的传值方式,如单例、NSUserDefaults等,这些的使用频率相对较小

通知、代理和block是使用率较高的逆向传值方法,相对而言,block的传值方式更加简洁,可读性也更高,装B性也更强,这些东西都是孰能生巧,没事多使用几次,就熟悉了

 

希望这篇文章能对你有所帮助~

 




https://www.xamrdz.com/mobile/4a21963917.html

相关文章: