DCURLrouter

JLRoutes
HHRouter
DCURLrouter

JLRoutes 的问题主要在于查找 URL 的实现不够高效,通过遍历而不是匹配。还有就是功能偏多。

HHRouter 的 URL 查找是基于匹配,所以会更高效,MGJRouter 也是采用的这种方法,但它跟 ViewController 绑定地过于紧密,一定程度上降低了灵活性。

  1. 将DCURLRouter文件夹拖到项目中
  2. 配置DCURLRouter.plist文件


  3. 加载DCURLRouter.plist文件数据
[DCURLRouter loadConfigDictFromPlist:@"DCURLRouter.plist"];
  1. push
 // 不需要拼接参数直接跳转
 [DCURLRouter pushURLString:@"dariel://twoitem" animated:YES];
 
 // 直接把参数拼接在自定义url末尾
 NSString *urlStr = @"dariel://twoitem?name=dariel&userid=213213";
 [DCURLRouter pushURLString:urlStr animated:YES];
 // 可以将参数放入一个字典
 NSDictionary *dict = @{@"userName":@"Hello", @"userid":@"32342"};
 [DCURLRouter pushURLString:@"dariel://twoitem" query:dict animated:YES];
 
 // 如果当前控制器和要push的控制器是同一个,可以将replace设置为Yes,进行替换.
 [DCURLRouter pushURLString:@"dariel://oneitem" query:dict animated:YES replace:YES];
 
 // 重写了系统的push方法,直接通过控制器跳转
 TwoViewController *two = [[TwoViewController alloc] init];
 [DCURLRouter pushViewController:two animated:YES];

modal

// 不需要拼接参数直接跳转
 [DCURLRouter presentURLString:@"dariel://threeitem" animated:YES completion:nil];
 
 // 直接把参数拼接在自定义url末尾
 NSString *urlStr = @"dariel://threeitem?name=dariel&userid=213213";
 [DCURLRouter presentURLString:urlStr animated:YES completion:nil];
 
 // 可以将参数放入一个字典
 NSDictionary *dict = @{@"userName":@"Hello", @"userid":@"32342"};
 [DCURLRouter presentURLString:@"dariel://threeitem" query:dict animated:YES completion:nil];
 
 // 给modal出来的控制器添加一个导航控制器
 [DCURLRouter presentURLString:@"dariel://threeitem" animated:YES withNavigationClass:[UINavigationController class] completion:nil];
 
 // 重写了系统的push方法
 ThreeViewController *three = [[ThreeViewController alloc] init];
 [DCURLRouter presentViewController:three animated:YES completion:nil];
  1. pop/dismiss
   /** pop掉一层控制器 */
    + (void)popViewControllerAnimated:(BOOL)animated;
    /** pop掉两层控制器 */
    + (void)popTwiceViewControllerAnimated:(BOOL)animated;
    /** pop掉times层控制器 */
    + (void)popViewControllerWithTimes:(NSUInteger)times animated:(BOOL)animated;
    /** pop到根层控制器 */
    + (void)popToRootViewControllerAnimated:(BOOL)animated;

   /** dismiss掉1层控制器 */
    + (void)dismissViewControllerAnimated: (BOOL)flag completion: (void (^ __nullable)(void))completion;
    /** dismiss掉2层控制器 */
    + (void)dismissTwiceViewControllerAnimated: (BOOL)flag completion: (void (^ __nullable)(void))completion;
    /** dismiss掉times层控制器 */
    + (void)dismissViewControllerWithTimes:(NSUInteger)times animated: (BOOL)flag completion: (void (^ __nullable)(void))completion;
    /** dismiss到根层控制器 */
    + (void)dismissToRootViewControllerAnimated: (BOOL)flag completion: (void (^ __nullable)(void))completion;
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容