方式一:属性传值
A页面的值跳转到B页面之后把值传给B页面,只需要在.h文件定义属性,A页面再跳转之前赋值给B页面的实例对象属性即可。
A页面(FirstViewController)部分代码:
在FirstViewController.m的button点击跳转方法中
![](http://upload-images.jianshu.io/upload_images/1708587-c8e3f805e46da02f.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
方式二:代理传值
首先在跳转界面B.h文件定义代理协议方法:
![](http://upload-images.jianshu.io/upload_images/1708587-a343a912aa9aeb0c.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
![](http://upload-images.jianshu.io/upload_images/1708587-718c3125f7482a87.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
在B.m中页面消失方法中实现委托:
![](http://upload-images.jianshu.io/upload_images/1708587-2c01e6cb6cbe7381.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
![](http://upload-images.jianshu.io/upload_images/1708587-91d75fcee17cc608.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
![](http://upload-images.jianshu.io/upload_images/1708587-ccd3d41d7cd72a3f.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
![](http://upload-images.jianshu.io/upload_images/1708587-5a6542dc0eec4157.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
方法三:通知传值
谁要监听值的变化,谁就注册通知。
A页面要监听B页面textfield的值的变化,那么他就在初始化方法里注册通知:
![](http://upload-images.jianshu.io/upload_images/1708587-f4975e78fcb3abdf.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
当B页面的textfield的值发生变化时A页面就会执行change方法:
![](http://upload-images.jianshu.io/upload_images/1708587-96d0549d46e9d206.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
在B页面消失方法中推送一个通知,相当于定义一个标识把值传给该标识通知的注册者:
![](http://upload-images.jianshu.io/upload_images/1708587-1442da43cca7929b.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
通知传值是一对多的关系,一般用于跳转界面传值给上一界面。
方式四:单例传值
新建一个继承NSObject的类:
![](http://upload-images.jianshu.io/upload_images/1708587-2b49fbf16c60178d.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
在.h文件里声明一个属性和一个类方法:
![](http://upload-images.jianshu.io/upload_images/1708587-b804b5c7adaf2903.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
在.m文件实现类方法,初始化:
![](http://upload-images.jianshu.io/upload_images/1708587-63894cd556b9e963.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
![](http://upload-images.jianshu.io/upload_images/1708587-3f9489b731a6eab1.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
在A页面即将出现方法里:
![](http://upload-images.jianshu.io/upload_images/1708587-55cc2cbec7ac560f.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
单例方法其实就是一个只会初始化一次,然后给他赋值共享的一个单例,该方法适合正向和反向传值,但是不要滥用。
方式五:block传值
B页面传值给上一页面A:
在B页面定义一个block:
![](http://upload-images.jianshu.io/upload_images/1708587-8a1eaea67188cb94.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
定义声明一个方法(方便系统识别,提高开发效率):
![](http://upload-images.jianshu.io/upload_images/1708587-d66a6f0a81ee87f9.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
![](http://upload-images.jianshu.io/upload_images/1708587-12c995562d810fe2.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
在A页面跳转按钮方法里:
![](http://upload-images.jianshu.io/upload_images/1708587-2465aa9dee624128.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)