上家公司独立开发,而且是从无到有的,不是那种先让外包做一个版本然后从上边改的那种,这样就比较灵活了,而且看别人的代码并不是一件轻松惬意的事儿。
我最初认识HHRouter是上上家公司的最后一段时间,我们打算对已有项目进行重构的,之前这个项目是前端和原生混合开发的,性能不是特别好。重构的时候我们就选用了路由模式,这个模式主要就是解决界面耦合的(个人理解,感觉用过之后对它的理解还是比较浅的,在这里只讲下我对它的使用吧)。然后上家公司的项目是个商城类的APP,感觉用这个模式还是挺好的,毕竟据说淘宝、京东等APP也是用的路由模式。。。
路由模式也有好几种第三方可以选择,我们最终选择了HHRouter这个第三方,这个是我的领导定的,感觉我遇到HHRouter也是一种机缘,哈哈。。。
好了,废话不多说,下面我们就来谈论下我使用HHRouter这个第三方的具体方法吧。
首先,需要创建一个基于HHRouter的单例类,这个类就放APP中所有的viewcontroller,然后在这个类中需要实现一个初始化的方法,并在.h中声明
屏幕快照 2017-09-09 上午9.00.45.png 屏幕快照 2017-09-09 上午9.05.11.png这个就是需要写在初始化方法里的,好了,接下来看看怎么获取这些VC吧。
既然我们要用这个单例类来获取这些VC,那么我们就需要在didFinishLaunchingWithOptions这个方法里实现初始化路由这个方法:
屏幕快照 2017-09-09 上午9.09.20.png
然后在需要使用这个VC的地方
屏幕快照 2017-09-09 上午10.15.31.png
这样调用,这种方式不用在这个类中导入launchVC的头文件
那么问题就来了,一般我们导入头文件的时候传值可以在第二个类的.h文件中属性描述,还有block这些传值方式好像都不一样了,那么这个HHRouter该怎么传值呢?请往下看
1、字符串拼接传值
屏幕快照 2017-09-09 上午10.42.23.png
这个将字符串拼接的方法类似于属性描述传值
屏幕快照 2017-09-09 上午10.44.49.png
这个是在目标VC里取值的方法
2、block
在launchVC中相当于声明吧
屏幕快照 2017-09-09 上午11.59.07.png
然后
屏幕快照 2017-09-09 下午12.00.21.png
这样使用。当然,声明的时候也可以在callBlock后边进行字符串拼接,这样这些拼接的参数就是map:toBlock后边的params字典中的键值对。注意多个参数字符串拼接的时候要使用&符号隔开
如果你要传递一个model的话可以先把model转化成json形似,然后再转化成字符串进行拼接,至于怎么转化,这里就不在赘述了。
路由模式的底层原理是有文章介绍的,想要了解的可以再简书中搜索
想要交流经验的可以加我QQ979778584
网友评论