在IOS开发中或面试中,经常会遇到,两个或者多个控制器之间传值的问题 ,总结的集中方法仅供参考!

问题 :将B控制器中的textField 输入内容,传到A控制器中的label上显示出来,如何传值?

首先在storyboard中添加相关联的控制器(如下):

第一种方法: Block方法

1>在B控制器中定义一个block属性,这个block 是一个返回值为void,参数为NSString(传递textField的值)的block。
2>在B控制器的btw点击事件中,执行block,参数传self.textField.text.
3>在A控制器的-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender方法中 获取segue.destinationViewController,给它的block属性赋一段代码,这段代码就是将传过来的NSString 赋值给label

1》在Bcontroller.h中

2》在Bcontroller.m中

3》在Bcontroller.h中

4》在Bcontroller.m中

第二种方法:代理方法

1>在B控制器中定义协议方法,方法中要有NSString的参数,用来传递B控制器中textField的内容。(谁要传数据谁就定义协议,并添加代理属性).
2>在btn的点击事件中,执行代理的方法。传递参数进去,并且跳转到控制器A控制器.
3>在A控制器中的-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender方法中,设置代理,因为这个方法能获得B控制器,通过 segue.destinationViewController。
4>实现代理方法,将传过来的参数赋值给label。

1》在Bcontroller.h中

2》在Bcontroller.m中

3》在Acontroller.h中

4》在Acontroller.m中

第三种方式:通知方法

1>在B控制器中的btn点击方法中,发布一个通知UITextFieldTextDidEndEditingNotification。
2>在A控制器中添加self为观察者,监听UITextFieldTextDidEndEditingNotification通知,执行方法,方法中含有NSNotification的 参数,参数中就有B控制器中textField中text,赋值即可

1》在Bcontroller.h中

2》在Bcontroller.m中

3》在Acontroller.h中

4》在Acontroller.m中

第四种方法:用NSUserDefaults传值

在Bcontroller中

需要传值的地方编码

    //存储数据NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];[defaults setObject:@"A界面需要传递的值" forKey:@"自己的KEY"];//设置同步[defaults synchronize];

在Acontroller文件中

在ViewDidLoad中编码读取传递过来的值

    //读取A界面传递过来的值NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];self.userId = [defaults valueForKey:@"自己的KEY"];

转载于:https://www.cnblogs.com/zyj442714794/p/4594310.html

IOS开发控制器之间传值的几种小方法相关推荐

  1. android fragment传递参数_fragment之间传值的两种方法

    在Activity中加载Fragment的时候.有时候要使用多个Fragment切换.并传值到另外一个Fragment.也就是说两个Fragment之间进行参数的传递.查了很多资料.找到两种方法.一种 ...

  2. ASP.NET 页面之间传值的几种方式

    对于任何一个初学者来说,页面之间传值可谓是必经之路,却又是他们的难点.其实,对大部分高手来说,未必不是难点. 回想2016年面试的将近300人中,有实习生,有应届毕业生,有1-3年经验的,有3-5年经 ...

  3. vue组件之间传值的几种方式

    vue组件传值 父子组件之间传值.几种常见方式 第一种方式(父传子) 父组件 <m-child :childMsg="parentMsg"></m-child&g ...

  4. Vue组件之间传值的几种方法 (直接上代码)

    vue组件之间传值的几种方法总结 一. props(父传子) 父组件 传递 <template><div><HelloWorld :msg="msg" ...

  5. iOS开发UI篇—实现一个私人通讯录小应用(一)

    iOS开发UI篇-实现一个私人通讯录小应用(一) 一.该部分主要完成内容 1.界面搭建                        2.功能说明 (1).只有当账号和密码输入框都有值的时候,登录按钮 ...

  6. IOS学习之UISwitch控件两种使用方法和监听

    IOS学习之UISwitch控件两种使用方法和监听 分类: IOS开发入门2012-06-15 11:48 1363人阅读 评论(0) 收藏 举报 一.第一种创建UISwitch控件的方法,在代码中动 ...

  7. 【外贸小知识】通过whatsapp获取流量的几种小方法

    相信做外贸的小伙伴们对于是whatsap比较熟悉的,都想通过whatsapp来获取更多流量,更多用户.今天我们花漾灵动小编就给大家汇总了通过whatsapp获取流量的几种小方法,希望能对新手小白有点作 ...

  8. 如何将图片批量压缩?全面盘点这几种小方法

    写在前面:现在的人们都喜欢用自己手机里的相机来记录自己生活中的点滴美好,而拍照成为人们记录自己生活的最常用的一个方式,这样当时间过去也会记得自己之前曾去过哪些地方,可是照片多了之后也很烦恼,图片太多, ...

  9. 计算机不能再U盘新建文件夹,U盘无法建立新的文件夹?!三种小方法教你解决...

    原标题:U盘无法建立新的文件夹?!三种小方法教你解决 U盘是现代人常用的移动存储设备之一,特点是小巧易携带,容量大,因此深得用户喜欢.但是这小小的U盘一旦出现故障,就让人有点难以招架了,U盘不比电脑, ...

最新文章

  1. 服务器邮箱备份文件在哪里,如何轻松将数据文件备份到电子邮箱?
  2. 多线程的实现方式_Java中线程的状态及多线程的实现方式
  3. python与excel的差别-python3与Excel的完美结合
  4. bzoj 1001: [BeiJing2006]狼抓兔子
  5. zz 写科技论文的一点体会
  6. 网页打开微信链接 无法返回
  7. cad中简单流程图制作_想要又快又好的画出世界级的流程图,这样牛掰的方法一定要知道...
  8. PHP PDO函数库详解
  9. Item 14 In public classes, use accessor methods, not public fields
  10. apriori算法代码_sklearn(九)apriori 关联规则算法,以及FP-growth 算法
  11. 今日问题:开发在临近发布时“画蛇添足”,测试没有时间测试,该如何处理?
  12. 学生管理系统(JAVA后台简约版)
  13. 如何通过word自动生成论文目录
  14. 大数据学习——Hadoop本地模式搭建
  15. 【LED灯屏控制器】AG10K 烧录程序(2)
  16. adb 连接安卓手机远程调试
  17. c语言法定节日日历程序,一个完整的日历程序(含有农历)
  18. 80行代码自己动手写一个表格拆分与合并小工具(文末附工具下载)
  19. 到底什么是叶脊网络(Spine-Leaf)?
  20. 网卡不叫eth0,而叫ens33、ens160、eno1 or enp0s*?

热门文章

  1. Maven私服安装及配置——(十二)
  2. ThinkPHP5整合LayUI编辑器图片上传
  3. HTML5与CSS3实战指南读书笔记之一些可能会有用的东西
  4. exsi5.5安装过程中遇到的一个问题
  5. 记mysqldump导出导入数据库的一个小问题~
  6. 内容激活码jsp发送email
  7. python中import os_python import os
  8. 设计模式 — 行为型模式 — 状态模式
  9. Linux Kernel TCP/IP Stack — L3 Layer — 邻居发现子系统
  10. 分布式系统架构设计系列文章