PDRouter 是一个用于 iOS 的轻量级路由框架,支持 URL 路由、拦截器、自定义页面参数映射等功能。
- 支持通过 URL 打开页面
- 支持自定义拦截器,进行路由拦截和处理
- 支持自动和手动接收路由参数
- 支持自定义路由参数到页面属性的映射
通过 CocoaPods 安装
pod 'PDRouter'
使用 PD_EXPORT_PAGE
宏在您的视图控制器中导出页面:
PD_EXPORT_PAGE("pipedog://open/page/intro", PDIntroViewController)
@interface PDIntroViewController : UIViewController
@end
使用 PDRouter
的 openURL:
方法来打开一个页面:
[[PDRouter globalRouter] openURL:@"pipedog://open/page/intro"];
您的视图控制器可以通过实现 PDRouterAutoParamReceiver
或 PDRouterManualParamReceiver
协议来接收路由参数:
@interface PDIntroViewController : UIViewController <PDRouterAutoParamReceiver>
@property (nonatomic, copy) NSString *name;
@property (nonatomic, assign) NSInteger age;
@end
@implementation PDIntroViewController
- (NSDictionary<PDRouterParameterKey, PDRouterTargetProperty> *)routerCustomPropertyMapper {
return @{@"n": @"name",
@"p": @"page",
@"h": @"height"};
}
@end
您可以通过实现 PDRouterInterceptor
协议并使用 addInterceptor:
方法来添加自定义拦截器:
@interface MyCustomInterceptor : NSObject <PDRouterInterceptor>
@end
@implementation MyCustomInterceptor
- (BOOL)intercept:(id<PDRouterInterceptorChain>)chain {
// 自定义拦截逻辑
return [chain proceed:chain.request];
}
@end
// 添加拦截器
[[PDRouter globalRouter] addInterceptor:[[MyCustomInterceptor alloc] init]];
PDRouter 使用 MIT 许可证,详见 LICENSE 文件。