iOS-Developer-OCiOS接下来要研究的知识点iOS 开发每天分享优质文章

简单实现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的思路!

1、统一管理导航控制器,方法一:自定义导航控制器 方法二:可以给导航控制增加分类

Snip20190422_1.png

增加的方法也很常见!push与present方法!如果需要传递其他的参数,或者增加回调,可以自己扩展!

2、1中的方法很常见,如何使用Router控制跳转呢,建议增加RouterManager,管理自己增加/扩展的导航控制器的方法!

Snip20190422_2.png
然后看一下Manager里的具体思路!
Snip20190422_3.png

单例就不用多说了!核心是用字符串转换成控制器类名称,如果需要增加一些属性,重要的是使用KVC添加,调用,具体可以看如下图!其他的没有特别的!

Snip20190422_4.png

使用kvc添加属性,也可以自己增加扩展!

ps:需要注意的是判断VC的类名容错处理,这个函数是私有的,不需要对外!


Snip20190422_5.png

3、传输data数据的时候,可以传输block!


Snip20190422_6.png

具体代码传送门:代码传送门

上一篇下一篇

猜你喜欢

热点阅读