原来方式
从AViewController 跳转到 BViewController,常见以下的编码方式:
BController *bController = [[BController alloc] init];
[self presentViewController:bController animated:YES completion:nil];
如果视图(ViewController)较少的情况下,这种方式问题不大,但视图一旦多了之后,关联多了之后,这种方式的弊端就出来了,硬编码的方式导致修改困难,而且无法统一化处理(例如:增加ViewController初始化参数,替换ViewController)。
原来方式VC跳转DTYRouterManager 处理
1.将ViewController跳转所需的参数进行格式化:子ViewController名称、实例化方式(代码 or storyboard)、跳转方式、传递参数;
2.跳转格式化参数解析为 DYTRouterUrl 对象,转化为各个对象属性(负责字符串解析、解析缓存);
3.将DYTRouterUrl 提取封装为 DYTRouterNode(负责解析为 ViewController 对象);
4.通过DYTRouterManager 进行跳转的处理(push or present 子视图);
所有的ViewController 的跳转都通过 伪Url 进行处理并传递相应的参数,实现ViewController之间的关联解藕,都通过DYTRouterManager进行统一处理,可以进行灵活的配置和替换。