码迷,mamicode.com
首页 > 其他好文 > 详细

storyboard中的三种传值

时间:2014-12-20 15:26:51      阅读:159      评论:0      收藏:0      [点我收藏+]

标签:

三种传值:属性传值 block传值 以及 代理传值 (这里我用前面的页面和后面的)来表示两个控制器:LoginViewController和RegisterViewController

建立两个控制器:LoginViewController(loginViewController)和RegisterViewController(registerViewController),

  1.在LoginViewController上建立一个TextField(loginTextField)和一个UIButton(loginButton), loginTextField指向.h文件, 建立一个属性,  loginButton指向registerViewController类型是show;

  2.rregisterViewController中建立一个TextField(registerTextField) 两个button (blockButton, delegateButton),  registerTextField指向.h文件, 建立一个属性, 两个button分别指向.m文件建立自己的方法sendValWithBlock和sendValWithDelegate;

1.属性传值

  在registerViewController.h中定义一个value属性, 用来传值. 在LoginViewController中的prepareForSegue方法中的代码是  

 1 - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
 2 {
 3     RegisterViewController* registerVC =  segue.destinationViewController;
 4     
 5     // 1.属性传值
 6     NSString* str = self.loginTextField.text;
 7     if ([registerVC respondsToSelector:@selector(setValue:)]) {
 8         [registerVC setValue:str forKey:@"value"];
 9     }
10     
11     // 2.block传值
12     registerVC.sendValue = ^(NSString * obj){
13         _loginTextField.text = obj;
14     };
15     
16     // 3.代理传值
17     registerVC.delegate = self;
18     
19     
20 }
21 #pragma mark 实现代理方法
22 - (void)sendValueWithDelegate:(id)id
23 {
24     self.loginTextField.text = id;
25 }

  上面是三种传值方法的代码, 我们现在只看第一种, 我们初始化一个registerViewController对象, 来对他的value属性进行赋值, 然后再RegisterViewController中的registerTextField中显示他所传的值(这里我传的是loginTextField输入框里面的值)

  然后我再registerViewController里面的viewdidload方法里面接收: _registerTextField.text = _value;

2.block传值

block传值的原理(个人见解):首先你要明白的是两个控制器的生命周期, 第一个页面也就是登陆页面, 他的生命周期是整个过程, 而登陆页面的生命周期是在我们点击第一个页面的登陆按钮开始, 到第二个页面退出结束的. 而我们把block有声明 实现和调用三个阶段, 我们把它的三个阶段分开了, 这是基于block一个特性:!!!!block的内部在实现的时候是不运行的, 只有在调用的时候才会运行. (没时间了)==吧

  

  

storyboard中的三种传值

标签:

原文地址:http://www.cnblogs.com/lovelydark/p/4175443.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!