顺传
- 数据顺传:从上一级传递数据给下一级
- 在数据接收的控制器当中定义属性,准备接收数据
- 在数据的当前控制器中,获取目标控制器
- 给目标控制器中对应的属性进行赋值
- storyboard实现顺传
- 在执行performSegueWithIdentifier跳转之前,会调用一个方法prepareForSegue:sender:在此方法中,可以获取要跳转的控制器,可以给要跳转的控制器传递一些数据
- sourceViewController:获取当前控制器
- destinationViewController:获取目标控制器
- segue底层实现
- Storyboard Segue只依托于storyboard
- performSegueWithIdentifier:底层实现
- 1.根据标识到当前控制器所在的storyboard中去寻找, 有没有该指定标识的segue
- 2.当找到标识之后,就会创建UIStoryboardSegue对象
- 3.会把当前控制器设置为UIStoryboard的源控制器;segue.source ViewController = self;
- 4.会创建segue对象箭头指向的控制器,把它设置为segue的目标控制器segue.destinationViewController = 箭头指向的控制器
- 5.就会调用当前控制器的prepareForSegue:方法,告诉segue已经准备完毕,可以拿到要跳转的控制器,有没有数据要传给下一个控制器,如果有,可以在该方法中进行
- 6.最后会调用,segue的[segue perform],此方法才是真正的跳转push
- 纯代码方式实现顺传非常简单,直接push,拿到值直接设置title,因为在创建的时候就已经拿到了目标控制器
逆传
代理方式实现逆传,进行类与类之间的传值
-
什么时候使用代理?
- 当一个对象发生某一件事时,想要把自己的东西传给别人,或者是通知别人做某些事情,使用代理
-
代理使用场景
- 上下级之间,通常是他的上一级成为他的代理
-
代理的使用步骤
- 里三步
- 定义协议
- 定义代理属性
- .m文件中调用代理方法
- 外三步
- 设置代理
- 遵守协议
- 实现代理方法
- 里三步