DCURLrouter

JLRoutes
HHRouter
DCURLrouter

JLRoutes 的問題主要在于查找 URL 的實現(xiàn)不夠高效,通過遍歷而不是匹配。還有就是功能偏多。

HHRouter 的 URL 查找是基于匹配,所以會更高效,MGJRouter 也是采用的這種方法,但它跟 ViewController 綁定地過于緊密,一定程度上降低了靈活性。

  1. 將DCURLRouter文件夾拖到項目中
  2. 配置DCURLRouter.plist文件


  3. 加載DCURLRouter.plist文件數(shù)據(jù)
[DCURLRouter loadConfigDictFromPlist:@"DCURLRouter.plist"];
  1. push
 // 不需要拼接參數(shù)直接跳轉(zhuǎn)
 [DCURLRouter pushURLString:@"dariel://twoitem" animated:YES];
 
 // 直接把參數(shù)拼接在自定義url末尾
 NSString *urlStr = @"dariel://twoitem?name=dariel&userid=213213";
 [DCURLRouter pushURLString:urlStr animated:YES];
 // 可以將參數(shù)放入一個字典
 NSDictionary *dict = @{@"userName":@"Hello", @"userid":@"32342"};
 [DCURLRouter pushURLString:@"dariel://twoitem" query:dict animated:YES];
 
 // 如果當前控制器和要push的控制器是同一個,可以將replace設(shè)置為Yes,進行替換.
 [DCURLRouter pushURLString:@"dariel://oneitem" query:dict animated:YES replace:YES];
 
 // 重寫了系統(tǒng)的push方法,直接通過控制器跳轉(zhuǎn)
 TwoViewController *two = [[TwoViewController alloc] init];
 [DCURLRouter pushViewController:two animated:YES];

modal

// 不需要拼接參數(shù)直接跳轉(zhuǎn)
 [DCURLRouter presentURLString:@"dariel://threeitem" animated:YES completion:nil];
 
 // 直接把參數(shù)拼接在自定義url末尾
 NSString *urlStr = @"dariel://threeitem?name=dariel&userid=213213";
 [DCURLRouter presentURLString:urlStr animated:YES completion:nil];
 
 // 可以將參數(shù)放入一個字典
 NSDictionary *dict = @{@"userName":@"Hello", @"userid":@"32342"};
 [DCURLRouter presentURLString:@"dariel://threeitem" query:dict animated:YES completion:nil];
 
 // 給modal出來的控制器添加一個導(dǎo)航控制器
 [DCURLRouter presentURLString:@"dariel://threeitem" animated:YES withNavigationClass:[UINavigationController class] completion:nil];
 
 // 重寫了系統(tǒng)的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;
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容