XYRouter 0.7.3

XYRouter 0.7.3

测试测试过的
语言语言 Obj-CObjective C
许可证 MIT
发布最后发布2016年9月

Heavenuxyheaven维护。



XYRouter 0.7.3

  • 作者:
  • uxyheaven

XYRouter是一个通过URL路由来解决UIViewController跳转依赖的类。

  • 本类采用ARC

安装

  • 本库基于ARC
  • 将XYQuick复制到项目里
  • 在需要使用的文件或pch中 #import "XYRouter.h"

Podfile

pod 'XYRouter'

#import "XYRouter.h"

使用方法

创建viewController映射

可以通过key和NSString来映射一个UIViewController

[[XYRouter sharedInstance] mapKey:@"aaa" toControllerClassName:@"UIViewController"];

通过key获取viewController

当取出ViewController时,如果有单例[ViewController sharedInstance],则默认返回单例,如果没有,则返回[[ViewController alloc] init]。

UIViewController *vc = [[XYRouter sharedInstance] viewControllerForKey:@"aaa"];

映射viewController实例

如果不想每次都创建对象,也可以直接映射一个实例

[[XYRouter sharedInstance] mapKey:@"bbb" toControllerInstance:[[UIViewController alloc] init]];

使用block映射viewController实例

如果想更好的定制对象,可以用block

[[XYRouter sharedInstance] mapKey:@"nvc_TableVC" toBlock:^UIViewController *{
        TableViewController *vc = [[TableViewController alloc] init];
        UINavigationController *nvc = [[UINavigationController alloc] initWithRootViewController:vc];
        return nvc;
    }];

打开路径

你可以使用key来push出一个viewController

[[XYRouter sharedInstance] openURLString:@"aaa"];

path还支持相对路径,如下面的代码可以在当前目录下push出一个TableVC后,再push出TestVC1。

[[XYRouter sharedInstance] openURLString:@"./TableVC/TestVC1"];

目前支持以下描述:

  • 在当前目录下push ./
  • 在上一个目录下push ../
  • 在根目录下push /

分配参数

在跳转时还可以传递参数

@interface TestVC1 : UIViewController
@property (nonatomic, assign) NSInteger i;
@property (nonatomic, copy) NSString *str1;
@property (nonatomic, copy) NSString *str2;
@end

[[XYRouter sharedInstance] openURLString:@"TestVC1?str1=a&str2=2&i=1"];

更改rootViewController

可以用scheme:window替换windows.rootViewController

// rootViewController : nvc_TableVC
[[XYRouter sharedInstance] openURLString:@"window://nvc_TableVC/TestVC1"];

呈现rootViewController

可以用scheme:modal来呈现一个模态视图

// rootViewController : nvc_TableVC
[[XYRouter sharedInstance] openURLString:@"modal://nvc_TableVC/TestModalVC/"];

// rootViewController : TestModalVC
[[XYRouter sharedInstance] openURLString:@"modal://TestModalVC/?str1=a&str2=2&i=1"];

关闭rootViewController

直接使用dismiss关闭这个模态视图

[[XYRouter sharedInstance] openURLString:@"dismiss"];

openURL

如果在info.plist中添加一个URL Scheme: XYRouter,在用系统的UIApplication openURL方法时,加上XYRouter://前缀,就可以自动路由到XYRouter openURLString,解析时会按去掉XYRouter://后的字符串解析。

// 按照TableVC解析
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"XYRouter://TableVC"]];