JLRoutes笔记

1.在info.plist中添加

<key>CFBundleURLTypes</key>
    <array>
        <dict>
            <key>CFBundleURLName</key>
            <string>aaa.JLRoutes</string>
            <key>CFBundleURLSchemes</key>
            <array>
                <string>JLRoutesOne</string>
                <string>JLRoutesTwo</string>
                <string>JLRoutesThree</string>
            </array>
        </dict>
    </array>

2 注册JLRoutes

当用[JLRoutes globalRoutes]这种全局方式注册时,openURL方法中拦截也要用return [[JLRoutes globalRoutes] routeURL:url];

这样 当调用[UIApplication sharedApplication] openURL方法时,会先走Appdelegate的openURL方法,若是returnYES,则会立马回调注册的那个地方

//注册全局JLRoutes
    [[JLRoutes globalRoutes] addRoute:@"/:controller" handler:^BOOL(NSDictionary<NSString *,id> * _Nonnull parameters) {
        
        /*
         {
         JLRoutePattern = "/:controller";
         JLRouteScheme = JLRoutesGlobalRoutesScheme;
         JLRouteURL = "JLRoutesOne://OneNextViewController";
         controller = OneNextViewController;
         }
         */
        return YES; //一旦匹配 , 立即返回YES
    }];

注意下/:controller这样写,/:必须, controller可以换成其他的单词

3 自定义命名空间

也就是注册时用的是JLRoutes routesForScheme: 对象,这时
openURL方法中拦截也要用return [JLRoutes routesForScheme:XXX] routeURL 

逻辑同理第2步

 

//自定义命名空间注册

    [[JLRoutes routesForScheme:@"JLRoutesOne"] addRoute:@"/:tabController" handler:^BOOL(NSDictionary<NSString *,id> * _Nonnull parameters){

/*

 {

 JLRoutePattern = "/:tabController";

 JLRouteScheme = JLRoutesOne;

 JLRouteURL = "JLRoutesOne://OneNextViewController";

 tabController = OneNextViewController;

 }

 */

        return YES;

    }];

 

posted @ 2019-04-24 10:09  liuw_flexi  阅读(539)  评论(0编辑  收藏  举报