我们在iOS中通常都是用 pushViewController 或者 presentViewController 的方式来做视图间的跳转,但是这种方式免不了要在一个controller中初始化另外一个controller,使用Routable可以实现controller之间的解耦。
这是routable-ios的github地址:https://github.com/clayallsopp/routable-ios
在Xcode中新建一个项目 RoutableStudy
用cocospods来引入这个库吧,在Pod文件中加入
platform :ios, '7.0'
pod 'Routable','~> 0.1.1'
然后
pod install
把 main interface置空,不使用storyboard
分别新建两个UIViewController: 删除默认的ViewController, 新建 FirstViewController 和 SecondViewController
在AppDelegate.m 中加入
1 |
在 - (BOOL)application:(UIApplication )application didFinishLaunchingWithOptions:(NSDictionary )launchOptions { } 中加入1
2
3
4
5
6
7
8
9
10
11
12
13self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
// Override point for customization after application launch.
self.window.backgroundColor = [UIColor whiteColor];
UINavigationController *nav = [[UINavigationController alloc] initWithNibName:nil bundle:nil];
[[Routable sharedRouter] map:@"firstViewController" toController:[FirstViewController class]];
[[Routable sharedRouter] map:@"secondViewController" toController:[SecondViewController class] withOptions:[[UPRouterOptions modal] withPresentationStyle:UIModalPresentationFormSheet]];
[[Routable sharedRouter] setNavigationController:nav];
[self.window setRootViewController:nav];
[self.window makeKeyAndVisible];
[[Routable sharedRouter] open:@"firstViewController"];
FirstViewController
1 | - (id)initWithRouterParams:(NSDictionary *)params { |
SecondViewController
1 | - (id)initWithRouterParams:(NSDictionary *)params { |
跑一下程序吧,controller之间的跳转不再需要引入其它的controller并且alloc了。
Routable 不只是只有解偶的作用 先到这里吧 有更多领悟再来补充。