方式一:属性传值
A页面的值跳转到B页面之后把值传给B页面,只需要在.h文件定义属性,A页面再跳转之前赋值给B页面的实例对象属性即可。
A页面(FirstViewController)部分代码:
在FirstViewController.m的button点击跳转方法中
![](https://i-blog.csdnimg.cn/blog_migrate/6b9e8a301a2cf825ef66ee436485483d.webp?x-image-process=image/format,png)
方式二:代理传值
首先在跳转界面B.h文件定义代理协议方法:
![](https://i-blog.csdnimg.cn/blog_migrate/079b17fec81756b14953cbc0233bd4a2.webp?x-image-process=image/format,png)
![](https://i-blog.csdnimg.cn/blog_migrate/b4c1f0f845a84ab0bee339ad57fa6c57.webp?x-image-process=image/format,png)
在B.m中页面消失方法中实现委托:
![](https://i-blog.csdnimg.cn/blog_migrate/44b82a0c374121eadac6f5b2f9346269.webp?x-image-process=image/format,png)
![](https://i-blog.csdnimg.cn/blog_migrate/77a60cb79e12508b8da7ab0766cbfa8e.webp?x-image-process=image/format,png)
![](https://i-blog.csdnimg.cn/blog_migrate/954afbd5a79543b2ab756070152be82a.webp?x-image-process=image/format,png)
![](https://i-blog.csdnimg.cn/blog_migrate/a086c14e146a6916b93e3e3c5c168291.webp?x-image-process=image/format,png)
方法三:通知传值
谁要监听值的变化,谁就注册通知。
A页面要监听B页面textfield的值的变化,那么他就在初始化方法里注册通知:
![](https://i-blog.csdnimg.cn/blog_migrate/f4c4a37930382560aded62472344c2b0.webp?x-image-process=image/format,png)
当B页面的textfield的值发生变化时A页面就会执行change方法:
![](https://i-blog.csdnimg.cn/blog_migrate/c13c3aea22bd94b939082257d7f8947e.webp?x-image-process=image/format,png)
在B页面消失方法中推送一个通知,相当于定义一个标识把值传给该标识通知的注册者:
![](https://i-blog.csdnimg.cn/blog_migrate/e62d354fc655b2651e4fd16c0b2683b9.webp?x-image-process=image/format,png)
通知传值是一对多的关系,一般用于跳转界面传值给上一界面。
方式四:单例传值
新建一个继承NSObject的类:
![](https://i-blog.csdnimg.cn/blog_migrate/fb0f36367d38967e7d3a15f032a32ac2.webp?x-image-process=image/format,png)
在.h文件里声明一个属性和一个类方法:
![](https://i-blog.csdnimg.cn/blog_migrate/255e3156affe089b20ae27271ae4894e.webp?x-image-process=image/format,png)
在.m文件实现类方法,初始化:
![](https://i-blog.csdnimg.cn/blog_migrate/2f7000b822b65d7531d2fde7f2dbf6c8.webp?x-image-process=image/format,png)
![](https://i-blog.csdnimg.cn/blog_migrate/8daae20896fcc82fb9e33084a560de35.webp?x-image-process=image/format,png)
在A页面即将出现方法里:
![](https://i-blog.csdnimg.cn/blog_migrate/b52bee6d86c4d4b00e804195d56229f3.webp?x-image-process=image/format,png)
单例方法其实就是一个只会初始化一次,然后给他赋值共享的一个单例,该方法适合正向和反向传值,但是不要滥用。
方式五:block传值
B页面传值给上一页面A:
在B页面定义一个block:
![](https://i-blog.csdnimg.cn/blog_migrate/8d99abd8070637aa995bc26fb513f875.webp?x-image-process=image/format,png)
定义声明一个方法(方便系统识别,提高开发效率):
![](https://i-blog.csdnimg.cn/blog_migrate/b70d2c1c7473dcf620a8c02763ea6767.webp?x-image-process=image/format,png)
![](https://i-blog.csdnimg.cn/blog_migrate/2c57b06c0fa08e8612d8ed472021a0ae.webp?x-image-process=image/format,png)
在A页面跳转按钮方法里:
![](https://i-blog.csdnimg.cn/blog_migrate/2d0e8e3e5c324ee411396febc8a4f161.webp?x-image-process=image/format,png)