YWRouter
介绍
降低模块间耦合度
主要功能
- 支持URL后拼接参数的push和modal;
- 支持将参数作为字典传入;
- 支持 dismiss 一个或多个控制器;
- 支持 pop 一个或多个控制器;
- 支持在 dismiss 或 pop 控制器时反向传值;
使用方法
YWRouter
文件夹拖入项目中。
1. 将 2. 使用 CocoaPods
pod 'YWRouter', '~> 0.0.4'
1. push和modal的使用
所有的push和modal方法都可以通过YWRouter的类方法或对象来调用。这样在push和modal时不需获取导航控制器或控制器再进行跳转,当然也提供了目标控制器的返回,由开发者自己决定是否在控制器中进行push和modal。
1.1-push控制器
[YWRouter YW_pushControllerWithURL:@"open://controller?class=YWModularDetailViewController¶ms=传递参数" animated:YES];
或者
//传目标控制器的类名和参数
[YWRouter YW_pushControllerName:@"YWModularDetailViewController" params:@{@"value":@"传递参数"} animated:YES ];
在或者(对象方法)
[[YWRouter YWRouterSingletonInstance] pushControllerWithURL:@"open://controller?class=YWModularDetailViewController¶ms=传递参数" animated:YES];
1.2-modal控制器
//传目标控制器的类名和参数
[YWRouter YW_presentViewControllerName:@"YWModalTiveViewController" params:nil animated:YES completion:nil];
或者
/**
modal控制器
@param ctrUrl 链接 --格式-open://controller?class=控制器的类名¶ms=传递的参数(参数可选)
@param animated 是否需要动画
@param completion 完成回调
*/
+(void)YW_presentViewController:(NSString *_Nullable)ctrUrl animated:(BOOL)animated completion:(void (^ __nullable)(void))completion;
1.3-pop控制器
/**
快捷pop上一个控制器
@param animated 是否动画
*/
+ (void)YW_popViewControllerAnimated:(BOOL)animated;
/**
pop掉几层控制器(类方法)
@param layer 多少层
@param animated 是否动画
*/
+ (void)YW_popViewControllerWithLayer:(NSUInteger)layer Animated:(BOOL)animated;
/**
pop掉到根层控制器
@param animated 是否动画
*/
+ (void)YW_popToRootViewControllerWithAnimated:(BOOL)animated;
/**
pops掉几层控制器(对象方法)
@param layer 多少层
@param animated 是否动画
*/
- (void)popViewControllerWithLayer:(NSUInteger)layer Animated:(BOOL)animated;
1.4-dismiss控制器
//1-1层控制器,可以为多层
[YWRouter YW_dismissViewControllerWithLayer:1 Animated:YES completion:nil];
//dismiss掉到根层控制器
[YWRouter YW_dismissToRootViewControllerWithAnimated:YES completion:nil];
1.5-pop或者dismiss时反向传值
/** 回调block */
@property (nonatomic, strong) void(^ _Nullable ywReturnBlock)(id _Nullable value);
具体使用请参考demo(YWModularBlcokValueViewController)
case 4:{
NSString *url = [NSString stringWithFormat:@"open://controller?class=YWModularBlcokValueViewController¶ms=%@",self.dataList[0]];
[YWRouter YW_pushControllerWithURL:url animated:YES];
UIViewController *YWModularBlcokValueViewController = [[YWRouter YWRouterSingletonInstance] currentViewController];
YWModularBlcokValueViewController.ywReturnBlock = ^(id _Nullable value) {
NSLog(@"%@",value);
};
break;
}
case 5:{
NSString *url = [NSString stringWithFormat:@"open://controller?class=YWModularBlcokValueViewController¶ms=%@",self.dataList[0]];
UIViewController *YWModularBlcokValueViewController = [[YWRouter YWRouterSingletonInstance] OpenControllerWithURL:url];
YWModularBlcokValueViewController.ywReturnBlock = ^(id _Nullable value) {
NSLog(@"%@",value);
};
[self.navigationController pushViewController:YWModularBlcokValueViewController animated:YES];
break;
}
更多使用方法请查看示例