ViewController传值的需求
NavigationController本身是一个栈,每个ViewController遵循入栈原则存在其内。假设存在两个个ViewController:A/B依次进入NavigationController
1 | [self.navigationController pushViewController:A animated:YES]; |
从A传值到B称为正向传值,从B到A是逆向传值
正向传值
正向传值一般采用在B的头文件中声明某个属性(attribute),然后在A中实例化B时传入,十分简单
1 | //aVC.m |
逆向传值
逆向传值一般通过协议实现,界面B头文件声明协议,委托给A
1 | //bVC.h define protocol |
多窗口代理传值
多个窗口之间可以通过弱指针一层层传递进行传值
单例传值
声明一个全局唯一存在的单例,来进行访问和修改
奇巧淫技传值(没试过不推荐使用)
逆向传值不仅可以通过代理,因为NavgationConroller栈区是存在的,可以在B中栈区作为跳板找到内存中的A传值过去。