测试已测试 | ✗ |
Lang语言 | Obj-CObjective C |
许可证 | MIT |
发布上次发布 | 2016年10月 |
由 Andrey Zarembo,[etolstoy] 维护。
VIPER McFlurry 是一个现代框架,用于在 iOS 应用中实现 VIPER 架构。它提供了一些工具和组件,帮助您使用 VIPER 或从 MVC 迁移到开始新项目。
此示例仅适用于具有
UIViewController
作为视图的模块。然而,即使在UIView
和UITableViewCell
作为视图的情况下,也可以使用这种方法。
RamblerViperModuleInput
的模块输入协议@protocol SomeModuleInput <RamblerViperModuleInput>
- (void)moduleConfigurationMethod;
@end
[[self.transitionHandler openModuleUsingSegue:SegueIdentifier]
thenChainUsingBlock:^id<RamblerViperModuleOutput>(id<SomeModuleInput> moduleInput) {
[moduleInput moduleConfigurationMethod];
return nil;
}];
RamblerViperModuleOutput
的模块输出协议@protocol SomeModuleOutput <RamblerViperModuleOutput>
- (void)moduleConfigurationMethod;
@end
- (void)setModuleOutput:(id<RamblerViperModuleOutput>)moduleOutput;
[[self.transitionHandler openModuleUsingSegue:SegueIdentifier]
thenChainUsingBlock:^id<RamblerViperModuleOutput>(id<SomeModuleInput> moduleInput) {
[moduleInput moduleConfigurationMethod];
return sourceRouterPresenter; // Return of module output
}];
在大多数情况下,可以将模块工厂与 segues 替换。除了一种情况:您需要创建复杂的模块或非平凡模块实例化逻辑。
RamblerViperModuleFactory
对象作为模块模型。initWithStoryboard:andRestorationId:
- openModuleUsingFactory:withTransitionBlock:
方法。 [[self.transitionHandler openModuleUsingFactory:self.betaModuleFactory
withTransitionBlock:^(id <RamblerViperModuleTransitionHandlerProtocol> sourceModuleTransitionHandler,
id <RamblerViperModuleTransitionHandlerProtocol> destinationModuleTransitionHandler) {
UIViewController *sourceViewController = (id) sourceModuleTransitionHandler;
UIViewController *destinationViewController = (id) destinationModuleTransitionHandler;
[sourceViewController.navigationController pushViewController:destinationViewController
animated:YES];
}] thenChainUsingBlock:^id<RamblerViperModuleOutput>(id<RamblerModuleBetaInput> moduleInput) {
[moduleInput configureWithExampleString:exampleString];
return nil;
}];
添加到Podfile
pod "ViperMcFlurry"
MIT
Rambler&Co团队