2016笔记——组件化学习(二)
上一篇说了Protocol方案:
项目外壳+组件A 的实现。
ViewController-FirstVC-SecondVC-ThirdVC
这一篇拓展一下Protocol方案:
项目外壳+组件A+组件B的实现。
ViewController-FirstVC-SecondVC-ThirdVC-MondayVC
具体实现:
第一步,写一个简单的项目,项目内容是
FirstVC ->SecondVC->ThirdVC跳转。
第二步,写一个简单的项目,项目内容是MondayVC。
第三步,新建一个项目,将FirstVC、SecondVC、ThirdVC、MondayVC导入到新的项目中来。
第四步,新建一个继承于NSObject的ModuleManager,也就是组件管理中心。
第五步,新建一个继承于NSObject的CompontProtocol,也就是协议中心。
第六步,在CompontProtocol中添加ProjectAProctol以及ProjectBProtocol
屏幕快照 2016-10-12 上午9.53.31.png第七步,在ModuleManager.h中添加三个方法:
屏幕快照 2016-10-12 上午9.55.12.png第八步,在ModuleManager.m中实现这三个方法:
屏幕快照 2016-10-12 上午9.55.41.png 屏幕快照 2016-10-12 上午9.56.00.png第九步,前往第一个节点(FirstViewController)中导入ModuleManager、CompontProtocol头文件,添加注册
FirstViewController.h
屏幕快照 2016-10-12 上午9.57.48.pngFirstViewController.m
屏幕快照 2016-10-12 上午9.58.14.png 屏幕快照 2016-10-12 上午9.58.28.png 屏幕快照 2016-10-12 上午9.58.40.png 屏幕快照 2016-10-12 上午9.58.52.png第十步,前往第二个节点(MondayViewController)中导入ModuleManager、CompontProtocol的头文件,然后注册。
MondayViewController.m
屏幕快照 2016-10-12 上午10.02.41.png 屏幕快照 2016-10-12 上午10.02.50.png第十一步,前往ViewController中调用第一个组件。
ViewController中导入ModuleManager、CompontProtocol的头文件,然后添加按钮,按钮的点击事件中这样写:
屏幕快照 2016-10-12 上午10.05.16.png第十二步,前往第一个组件的ThirdViewController中,调用第二个组件:
ThirdViewController.m:
屏幕快照 2016-10-12 上午10.09.19.png 屏幕快照 2016-10-12 上午10.09.44.png 屏幕快照 2016-10-12 上午10.09.54.pngViewController-FirstVC-SecondVC-ThirdVC
ViewController-FirstVC-SecondVC-ThirdVC-MondayVC
其实二者相比,就只是多了这么几步:
1 导入项目B的文件
2 在协议中心添加新的协议B和方法
3 将项目B的接口文件(MondayVC)注册到组件管理中心
4 在项目B的接口文件(MondayVC)中实现协议B的方法
5 在调用项目B的地方(ThirdVC)通过组建管理中心获得到项目B的接口文件(MondayVC),调用B协议方法实现服务。
最后就是运行了:
useDouble.gif看看打印台的信息:
屏幕快照 2016-10-12 上午10.39.19.png完全无压力~嘿嘿。
最后上一个流程梳理图:
梳理.png然后我用语言表述一下:
1 新建继承于NSObject的ModuleManager,然后添加两个方法:注册方法和获取方法。
注册方法:传入protocol和class,然后生成protocol-class的注册表。
获取方法:传入protocol,返回class。
2 新建继承于NSObject的CompontProtocol,添加协议A,定义协议的方法。
3 在组件A中的接口VC也就是FirstVC中,导入CompontProtocol,实现协议A的方法。接着调用ModuleManager的注册方法。
4 调用时,在ViewController中,导入ModuleManager和CompontProtocol的头文件,然后调用ModuleManager的获取方法,传入协议A即可获得到FirstVC,然后执行协议A的方法即可调用组件A的服务。
5 多个组件时,定义多个协议,并在组件中提供服务的VC中导入CompontProtocol和ModuleManager头文件,实现协议,然后调用ModuleManager的注册方法。使用时,导入ModuleManager和CompontProtocol的头文件,传协议名获取class即可。
加油~~