• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

clayallsopp/routable-ios: Routable, an in-app native URL router, for iOS

原作者: [db:作者] 来自: 网络 收藏 邀请

开源软件名称:

clayallsopp/routable-ios

开源软件地址:

https://github.com/clayallsopp/routable-ios

开源编程语言:

Objective-C 98.9%

开源软件介绍:

Routable Build Status FOSSA 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:

@implementation UserController

// params will be non-nil
- (id)initWithRouterParams:(NSDictionary *)params {
  if ((self = [self initWithNibName:nil bundle: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]];

@implementation StoryboardController

+ (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

CocoaPods

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




鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap