Skip to content

SmallYing2014/routable-ios

Repository files navigation

Routable Build StatusFOSSA Status

Routable is an in-app native URL router, for iOS. Also available for Android.

Usage

Set up your app's router and URLs (usually done in application:didFinishLaunchingWithOptions:):

[[Routable sharedRouter] map:@"users/:id"toController:[UserController class]]; // Requires an instance of UINavigationController to open UIViewControllers [[Routable sharedRouter] setNavigationController:aNavigationController];

Implement initWithRouterParams: in your UIViewController subclass:

@implementationUserController// params will be non-nil - (id)initWithRouterParams:(NSDictionary *)params{if ((self = [selfinitWithNibName:nilbundle:nil])){self.userId = [params objectForKey:@"id"]} return self}

Then, anywhere else in your app, open a URL:

NSString *aUrl = @"users/4"; [[Routable sharedRouter] open:aUrl];

If you wish to do custom allocation of a controller, you can use +allocWithRouterParams:

[[Routable sharedRouter] map:@"users/:id"toController:[StoryboardController class]]; @implementationStoryboardController + (id)allocWithRouterParams:(NSDictionary *)params{UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Storyboard"bundle:nil]; StoryboardController *instance = [storyboard instantiateViewControllerWithIdentifier:@"sbController"]; instance.userId = [params objectForKey:@"id"]; return instance}

Set ignoresExceptions to YES to NOT throw exceptions (suggested for a Release/Distribution version)

[[Routable sharedRouter] setIgnoresExceptions:YES];

Installation

pod'Routable','~> 0.1.1'
#import<Routable/Routable.h>

If you're not able to use CocoaPods, please install Routable as a git submodule and add the files to your Xcode project.

Features

Anonymous Callbacks

You can invoke anonymous callbacks with Routable:

[[Routable sharedRouter] map:@"invalidate/:id"toCallback:^(NSDictionary *params){[Cache invalidate: [params objectForKey:@"id"]]]}]; [[Routable sharedRouter] open:@"invalidate/5h1b2bs"];

Presentation Options

You can configure if and how a UIViewController is presented modally with UPRouterOptions:

UPRouterOptions *options = [[UPRouterOptions modal] withPresentationStyle: UIModalPresentationFormSheet]; [self.router map:@"info"toController:[InfoController class] withOptions:options];

UPRouterOptions has the following DSL setters:

  • modal
  • withPresentationStyle:
  • withTransitionStyle:
  • forDefaultParams:

Open External URLs

Sometimes you want to open a URL outside of your app, like a YouTube URL or open a web URL in the browser. You can use Routable to do that:

[[Routable sharedRouter] openExternal:@"http://www.youtube.com/watch?v=oHg5SJYRHA0"];

Multiple Routers

If you need to use multiple routers, simply create new instances of Router:

UPRouter *adminRouter = [Routable newRouter]; [adminRouter map:@"profile"toController: [AdminProfile class]]; UPRouter *userRouter = [Routable newRouter]; [userRouter map:@"profile"toController: [UserProfile class]];

Contact

Clay Allsopp (http://clayallsopp.com)

License

Routable for iOS is available under the MIT license. See the LICENSE file for more info.

FOSSA Status

About

Routable, an in-app native URL router, for iOS

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Objective-C98.9%
  • Ruby1.1%