简单实现Router的一种-iOS

作者: JollyJerry | 来源:发表于2019-04-22 13:52 被阅读32次

    废话不多说,一般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

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

    相关文章

      网友评论

        本文标题:简单实现Router的一种-iOS

        本文链接:https://www.haomeiwen.com/subject/mfiniqtx.html