ATRouter
示例
要运行示例项目,请克隆仓库,然后首先从示例目录运行pod install
需求
安装
ATRouter 通过 CocoaPods 提供。要安装它,只需将以下行添加到您的 Podfile 中
pod 'ATRouter'
- pod 安装后需要在项目宿主工程中创建一个全局的header协议文件,用于声明所有需要协议路由router的VC协议,示例如下
#ifndef ATSupportedControllers_h #define ATSupportedControllers_h // TwoVC @protocol ATTwoViewController @end #endif
- 在每个频道(模块)Module下,创建一个bind module class 用于绑定所有已被ATSupportedControllers.h声明过的VC,示例如下
/// .h 文件 #import @interface ATBindClassModule : JSObjectionModule @end /// .m文件 #import "ATBindClassModule.h" #import "ATSupportedControllers.h" #import "ATTwoViewController.h" @implementation ATBindClassModule + (void)load { JSObjectionInjector *injector = [JSObjection defaultInjector]; injector = injector ? : [JSObjection createInjector]; injector = [injector withModule:[[self alloc] init]]; [JSObjection setDefaultInjector:injector]; } - (void)configure { // twoVC [self bindMetaClass:ATTwoViewController.class toProtocol:@protocol(ATTwoViewController)]; } @end
在每个频道(模块)Module下,创建一个ATRouter分类,用于注册VC route,示例如下
/// .h文件 #import NS_ASSUME_NONNULL_BEGIN @interface ATRouter (Test) @end /// .m文件 #import "ATRouter+Test.h" #import "ATSupportedControllers.h" #import #import #import static NSString *routerStr = @"/TwoVC/pass"; @implementation ATRouter (Test) + (void)load { // webVC [ATRouter addRoute:routerStr handler:^BOOL(NSDictionary *parameters) { id destination = [[JSObjection defaultInjector] getObject:@protocol(ATTwoViewController)]; UIViewController *c = [destination createInstanceWithParameters:parameters]; if (!c) { return NO; } [self navigationWithController:c parameters:parameters]; return YES; }]; } @end
- 在需要路由的VC里遵循协议,并且实现createInstanceWithParameters工厂方法,示例如下
#import "ATTwoViewController.h" #import @interface ATTwoViewController () @end @implementation ATTwoViewController - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view. self.title = NSStringFromClass(self.class); self.view.backgroundColor = [UIColor colorWithWhite:0.8 alpha:1]; } + (UIViewController *)createInstanceWithParameters:(NSDictionary *)parameters { NSLog(@"%@", parameters); return [self new]; } @end
- 在根nav或tab里遵循协议,并且实现createInstanceWithParameters工厂方法,示例如下
#import "ATViewController.h" #import @interface ATViewController () @end @implementation ATViewController // MARK: - - (BOOL)routeURL:URL withParameters:(NSDictionary *)parameters { return NO; } - (UINavigationController *)activeNavigationController { return (UINavigationController *)self.navigationController; } @end
作者
ABCReading, [email protected]
许可证
ATRouter可在MIT许可证下使用。更多详细信息请参阅LICENSE文件。