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

在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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值