之前的四篇是基于蘑菇街的组件化学习,今天研究的是LDBusMediator的组件化之路。
目标:
主工程 -FirstVC-SecondVC-ThirdVC
第一步,新建一个项目,项目内容 FirstVC-SecondVC-ThirdVC的跳转。
第二步,新建一个项目,将第一步的FirstVC-SecondVC-ThirdVC的文件导入。
第三步,新建一个继承于NSObject的QKProjectProtocol。
QKProjectProtocol.h
屏幕快照 2016-10-13 下午4.53.50.pngQKProjectProtocol.m中不实现这两个方法,为啥?下一步见晓。
第四步,新建一个继承于QKProjectProtocol的ProjectAProtocol:
ProjectAProtocol.h
屏幕快照 2016-10-13 下午4.55.21.pngProjectAProtocol.m
屏幕快照 2016-10-13 下午4.56.30.png 屏幕快照 2016-10-13 下午4.56.50.png 屏幕快照 2016-10-13 下午4.57.04.png 屏幕快照 2016-10-13 下午4.57.23.png 屏幕快照 2016-10-13 下午4.58.04.png这个ProjectAProtocol到底干了什么事情:
1 将Protocol注册到Mediator(具体是什么,移步下一步)
2 硬编码,使用Key-Value的形式,保存URL.host-ViewController
3 判断当前Protocol是否能打开某个URL
4 打开传入的URL,从默认注册表中获取到对应URL的ViewController,然后进行传值的操作。
第五步,创建QKMediator,是一个组件协议控制中心,注意,它控制的是组件协议,也就是继承于QKProjectProtocol类的实例。
QKMediator.h
屏幕快照 2016-10-13 下午5.04.12.pngQKMediator.m
屏幕快照 2016-10-13 下午5.04.27.png 屏幕快照 2016-10-13 下午5.04.38.png 屏幕快照 2016-10-13 下午5.05.06.pngQKMediator的主要功能是,保存各个组件的协议,当需要打开某个URL时,前往该协议中,判断能够打开。如果可以打开,那么需要打开时,前往协议中,根据URL-ViewController注册表,得到VC,并打开。
第六步,给组件的接口VC,也就是FirstVC添加传参方法,以及处理后的回传数据方法:
屏幕快照 2016-10-13 下午5.16.27.pngFirstVC中实现回传信息的方法:
屏幕快照 2016-10-13 下午5.16.38.png第七步,调用组件的服务。
ViewController.h中没有改动。
ViewController.m:
屏幕快照 2016-10-13 下午5.11.56.png 屏幕快照 2016-10-13 下午5.12.06.png关键是打开的URL了,qk365:// 这几个不重要,关键是FirstVC,这个要和ProjectAProtocol中shareProjectAProtocol方法中所注册的urlDic的Key保持一致,需要跳转哪个ViewController,就使用对应的Key。
第八步,运行
useOne.gif还有打印台信息:
屏幕快照 2016-10-13 下午5.29.36.png加油~
网友评论