Latest 1.0.0
Homepage https://github.com/LiGuanWen/LLRoute
License MIT
Platforms ios 8.0
Authors

项目之间的跳转路线 适用于项目之内 和各个模块项目之间的跳转 组件化管理项目

使用方式 通过pod      
pod ‘LLRoute’, :git => ‘https://github.com/LiGuanWen/LLRoute.git
导入到工程中

使用是 需要先注册跳转路径文件class 一般再 – (BOOL)application:(UIApplication )application didFinishLaunchingWithOptions:(NSDictionary )launchOptions 中注册
PS: 已  LLSpeedRoute 为例子
比如:    [[LLRouteManager sharedManager] registerRoute:[LLSpeedRoute class]];

创建工程中独立的 route 参考 (LLSpeedRoute)

//// LLSpeedRoute.h

import <Foundation/Foundation.h>

import "LLRoute.h"

define LLSPEED_SCHEME @"llspeed"

//开始页面
static NSString const llspeed_routeWithBegin = @"llspeed://game/begin";
//菜单
static NSString
const llspeed_routeWithMenu = @"llspeed://game/menu";
//关于
static NSString *const llspeed_routeWithAbout = @"llspeed://game/about";

@interface LLSpeedRoute : NSObject
@property (nonatomic,strong) UIViewController currentVC; //跳转的VC
@property (nonatomic,strong) NSURL
linkUrl; //链接地址
@property (nonatomic,assign) BOOL isPush; //是否跳转页面
@property (nonatomic,assign) BOOL hidesBottom; //是否跳转页面
@property (nonatomic,strong) NSMutableDictionary *parameterDict; //对象参数

/**
路径跳转

@param url 跳转的url
@param currentVC 当前跳转的UIViewController
@param hidesBottomBarWhenPushed 是否隐藏tabbar
@param parameterDict 需要传递的参数
*/

  • (LLSpeedRoute )routeWithUrl:(NSURL )url currentVC:(UIViewController )currentVC hidesBottomBarWhenPushed:(BOOL)hidesBottomBarWhenPushed parameterDict:(NSMutableDictionary )parameterDict;
    @end

// LLSpeedRoute.m

import "LLSpeedRoute.h"

import "LLSpeedAboutViewController.h" //关于

import "LLSpeedMenuViewController.h" //菜单

import "LLSpeedGameViewController.h" //开始

@implementation LLSpeedRoute

/*
跳转前缀
/
+(NSString *)routeName{
return LLSPEED_SCHEME;
}

/**
组件scheme跳转 子类重新 参考!!!!!!

@param schemeUrl scheme参数
@param dic 其他特殊参数
*/

  • (void)routeToSchemeUrl:(NSURL )schemeUrl parameter:(NSMutableDictionary )dic{
    UIViewController currentVC = [dic objectForKey:CURRENT_VC_KEY];
    NSLog(@"当前页面 currvc class = %@",[currentVC class]);
    NSString
    hidesBottomStr = [dic objectForKey:HIDESBOTTOMBARWHENPUSHED_KEY];
    BOOL hidesBottom;
    if ([hidesBottomStr isEqualToString:HIDESBOTTOMBARWHENPUSHED_YES]) {
    hidesBottom = YES;
    }else{
    hidesBottom = NO;
    }
    [LLSpeedRoute routeWithUrl:schemeUrl currentVC:currentVC hidesBottomBarWhenPushed:hidesBottom parameterDict:dic];
    }

/**
路径跳转

@param url 跳转的url
@param currentVC 当前跳转的UIViewController
@param hidesBottomBarWhenPushed 是否隐藏tabbar
@param parameterDict 需要传递的参数
*/

  • (LLSpeedRoute )routeWithUrl:(NSURL )url currentVC:(UIViewController )currentVC hidesBottomBarWhenPushed:(BOOL)hidesBottomBarWhenPushed parameterDict:(NSMutableDictionary )parameterDict{
    LLSpeedRoute *route = [[LLSpeedRoute alloc] initWithUrl:url currentVC:currentVC hidesBottomBarWhenPushed:hidesBottomBarWhenPushed parameterDict:parameterDict];
    return route;
    }

  • (id)initWithUrl:(NSURL )url currentVC:(UIViewController )currentVC hidesBottomBarWhenPushed:(BOOL)yes parameterDict:(NSMutableDictionary *)parameterDict{
    self = [super init];
    if (self) {
    self.currentVC = currentVC;
    self.linkUrl = url;
    self.hidesBottom = yes;
    self.parameterDict = parameterDict;
    [self startParsingWithUrl:url];
    }
    return self;
    }

pragma mark – 开始解析

/**

  • 开始解析
  • @param url url description
    /
    -(void)startParsingWithUrl:(NSURL
    )url{
    NSString scheme = url.scheme;
    if ([scheme hasPrefix:LLSPEED_SCHEME]) {
    [self routeToModule:[LLRoute getModuleInfo:url]];
    }else if ([scheme isEqualToString:@"http"]||[scheme isEqualToString:@"https"]||[scheme isEqualToString:@"ftp"])
    {
    [self parseToOtherLinkWithUrl:url.absoluteString];
    }else if ([scheme isEqualToString:@"tel"])
    {
    [self parseToPhoneCallWithUrl:url.absoluteString];
    }else{
    UIAlertView
    alertView = [[UIAlertView alloc] initWithTitle:@"链接地址错误" message:url.absoluteString delegate:nil cancelButtonTitle:@"关闭" otherButtonTitles:nil, nil];
    [alertView show];
    }
    }

pragma mark – 解析到对应的模块

/**

  • 解析模块 (内部)
  • @param moduleInfo url description
    /
    -(void)routeToModule:(LLModuleInfo
    )moduleInfo{
    if ([moduleInfo.moduleName isEqualToString:@"game"]) {
    //
    [self routeToGameWithModule:moduleInfo];
    }

}
/**

  • 解析为外部链接
  • @param url url description
    /
    -(void)parseToOtherLinkWithUrl:(NSString
    )url{

}

/**

  • 拨打电话
  • @param url url description
    /
    -(void)parseToPhoneCallWithUrl:(NSString
    )url{
    UIWebViewcallWebview =[[UIWebView alloc] init] ;
    NSURL
    telURL =[NSURL URLWithString:url];
    [callWebview loadRequest:[NSURLRequest requestWithURL:telURL]];
    [self.currentVC.view addSubview:callWebview];
    }
  • (void)routeToGameWithModule:(LLModuleInfo*)moduleInfo{
    //开始
    if ([moduleInfo.page isEqualToString:@"/begin"]) {
    [LLSpeedRoute pushToGameBeginWithCurrVC:self.currentVC];
    return;
    }
    //菜单
    if ([moduleInfo.page isEqualToString:@"/menu"]) {
    [LLSpeedRoute pushToGameMenuWithCurrVC:self.currentVC];
    return;
    }
    //关于
    if ([moduleInfo.page isEqualToString:@"/about"]) {
    [LLSpeedRoute pushToGameAboutWithCurrVC:self.currentVC];
    return;
    }
    }

//开始

  • (void)pushToGameBeginWithCurrVC:(UIViewController )currVC{
    LLSpeedGameViewController
    vc = [[LLSpeedGameViewController alloc] init];
    vc.hidesBottomBarWhenPushed = YES;
    [currVC.navigationController pushViewController:vc animated:YES];
    }

//菜单

  • (void)pushToGameMenuWithCurrVC:(UIViewController )currVC{
    LLSpeedMenuViewController
    vc = [[LLSpeedMenuViewController alloc] init];
    vc.hidesBottomBarWhenPushed = YES;
    [currVC.navigationController pushViewController:vc animated:YES];
    }

//关于

  • (void)pushToGameAboutWithCurrVC:(UIViewController )currVC{
    LLSpeedAboutViewController
    vc = [[LLSpeedAboutViewController alloc] init];
    vc.hidesBottomBarWhenPushed = YES;
    [currVC.navigationController pushViewController:vc animated:YES];
    }

@end

调用

//开始游戏

  • (IBAction)gameBeginAction:(id)sender {
    //方式一 ()
    //    [LLSpeedRoute routeWithUrl:[NSURL URLWithString:llspeed_routeWithBegin] currentVC:self hidesBottomBarWhenPushed:YES parameterDict:nil];
    //方式二  (推荐)
       [LLRoute routeWithUrl:[NSURL URLWithString:llspeed_routeWithBegin] currentVC:self hidesBottomBarWhenPushed:YES parameterDict:nil];
    }

Latest podspec

{
    "name": "LLRoute",
    "version": "1.0.0",
    "summary": "use for Lilong LLRoute module.",
    "description": "use for LLRoute module.nItu2019s awesome!!",
    "homepage": "https://github.com/LiGuanWen/LLRoute",
    "license": {
        "type": "MIT",
        "file": "LICENSE"
    },
    "authors": {
        "Lilong": "[email protected]"
    },
    "platforms": {
        "ios": "8.0"
    },
    "source": {
        "git": "https://github.com/LiGuanWen/LLRoute.git",
        "tag": "1.0.0"
    },
    "source_files": "LLRouteClass/**/*.{h,m}"
}

Pin It on Pinterest

Share This