简单实现Router的一种-iOS
2019-04-22 本文已影响32人
JollyJerry
废话不多说,一般APP的开发中,项目中基本的结构常见的有:
1、 TabBarVC - > NavVC - > RootVC
2、 NavVC -> RootVC
导航控制器最为常见,iOS常用的方法,用于导航控制器的跳转方法为:
UIViewController *tempVC = [[UIViewController alloc] init];
[tempVC.navigationController pushViewController:targetVC animated:YES];
但是在复杂的开发中,这种跳转方式有一点不方便的就是每一次需要单独创建控制器-VC,并且不能统一管理跳转的目标控制器!由此有Router的出现 —— 路由,具体Router在网络分发中由来,作用大概是分发网络地址,具体可以自行搜索!
我们具体看一下iOS项目中简单的Router的思路!
Snip20190422_1.png1、统一管理导航控制器,方法一:自定义导航控制器 方法二:可以给导航控制增加分类
增加的方法也很常见!push与present方法!如果需要传递其他的参数,或者增加回调,可以自己扩展!
Snip20190422_2.png2、1中的方法很常见,如何使用Router控制跳转呢,建议增加RouterManager,管理自己增加/扩展的导航控制器的方法!
然后看一下Manager里的具体思路!
Snip20190422_3.png单例就不用多说了!核心是用字符串转换成控制器类名称,如果需要增加一些属性,重要的是使用KVC添加,调用,具体可以看如下图!其他的没有特别的!
Snip20190422_4.png使用kvc添加属性,也可以自己增加扩展!
ps:需要注意的是判断VC的类名容错处理,这个函数是私有的,不需要对外!
Snip20190422_5.png
3、传输data数据的时候,可以传输block!
Snip20190422_6.png
具体代码传送门:代码传送门