ATRouter 1.1.0

ATRouter 1.1.0

lianglibao 维护。



ATRouter 1.1.0

  • 作者:
  • ABCReading

ATRouter

CI Status Version License Platform

示例

要运行示例项目,请克隆仓库,然后首先从示例目录运行pod install

需求

安装

ATRouter 通过 CocoaPods 提供。要安装它,只需将以下行添加到您的 Podfile 中

pod 'ATRouter'
    1. pod 安装后需要在项目宿主工程中创建一个全局的header协议文件,用于声明所有需要协议路由router的VC协议,示例如下
    #ifndef ATSupportedControllers_h
    #define ATSupportedControllers_h
    // TwoVC
    @protocol ATTwoViewController 
    @end
    #endif
    
    1. 在每个频道(模块)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    
    
    1. 在每个频道(模块)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
      
    1. 在需要路由的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
    
    1. 在根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文件。