通过通过url routing解决UIViewController跳转依赖
XYRouter
https://github.com/uxyheaven/XYRouter
XYRouter是一个通过url routing来解决UIViewController跳转依赖的类.
* 本类採用ARC
Installation
- 本库基于ARC
- 拷贝XYQuick到项目里
- 在须要用的文件或者pch里
#import "XYRouter.h"
Podfile
pod 'XYRouter'
#import "XYRouter.h"
Usage
Creating viewController map
能够通过key和NSString来映射一个UIViewController
[[XYRouter sharedInstance] mapKey:@"aaa" toControllerClassName:@"UIViewController"];
Getting viewController for key
当取出ViewController的时候, 假设有单例[ViewController sharedInstance], 默认返回单例, 假设没有, 返回[[ViewController alloc] init].
UIViewController *vc = [[XYRouter sharedInstance] viewControllerForKey:@"aaa"];
Maping a viewController instance
假设不想每次都创建对象, 也能够直接映射一个实例
[[XYRouter sharedInstance] mapKey:@"bbb" toControllerInstance:[[UIViewController alloc] init]];
Maping a viewController instance with a block
假设想更好的定制对象, 能够用block
[[XYRouter sharedInstance] mapKey:@"nvc_TableVC" toBlock:^UIViewController *{
TableViewController *vc = [[TableViewController alloc] init];
UINavigationController *nvc = [[UINavigationController alloc] initWithRootViewController:vc];
return nvc;
}];
Opening path
你能够使用key去push出一个viewController
[[XYRouter sharedInstance] openUrlString:@"aaa"];
path还支持相对路径, 如以下的代码能够在当前文件夹下push出一个TableVC后, 再push出TestVC1.
[[XYRouter sharedInstance] openUrlString:@"./TableVC/TestVC1"];
眼下支持这些描写叙述:
- 在当前文件夹push
./ - 在上一个文件夹push
../ - 在根文件夹根push
/
Assigning parameters
在跳转的时候还能够传递參数
@interface TestVC1 : UIViewController
@property (nonatomic, assign) NSInteger i;
@property (nonatomic, copy) NSString *str1;
@property (nonatomic, copy) NSString *str2;
@end
[[XYRouter sharedInstance] openUrlString:@"TestVC1?str1=a&str2=2&i=1"];
Changing rootViewController
能够用scheme:window替换windows.rootViewController
// rootViewController : nvc_TableVC
[[XYRouter sharedInstance] openUrlString:@"window://nvc_TableVC/TestVC1"];
Presenting rootViewController
能够用scheme:modal来呈现一个模态视图
// rootViewController : nvc_TableVC
[[XYRouter sharedInstance] openUrlString:@"modal://nvc_TableVC/TestModalVC/"];
// rootViewController : TestModalVC
[[XYRouter sharedInstance] openUrlString:@"modal://TestModalVC/?str1=a&str2=2&i=1"];
Dismissing rootViewController
关闭这个模态视图直接用dismiss
[[XYRouter sharedInstance] openUrlString:@"dismiss"];通过通过url routing解决UIViewController跳转依赖的更多相关文章
- 转:【WebDriver】封装GET方法来解决页面跳转不稳定的问题
在大多数测试环境中,网络或者测试服务器主机之间并不是永远不出问题的,很多时候一个客户端的一个跳转的请求会因为不稳定的网络或者偶发的其它异常hang死在那里半天不动,直到人工干预动作的出现. ...
- [ASP.NET MVC 小牛之路]07 - URL Routing
我们知道在ASP.NET Web Forms中,一个URL请求往往对应一个aspx页面,一个aspx页面就是一个物理文件,它包含对请求的处理. 而在ASP.NET MVC中,一个URL请求是由对应的一 ...
- ASP.NET MVC 学习之路由(URL Routing)
在ASP.NET MVC中,一个URL请求是由对应的一个Controller中的Action来处理的,由URL Routing来告诉MVC如何定位到正确的Controller和Action. 默认路由 ...
- URL Routing
们知道在ASP.NET Web Forms中,一个URL请求往往对应一个aspx页面,一个aspx页面就是一个物理文件,它包含对请求的处理. 而在ASP.NET MVC中,一个URL请求是由对应的一个 ...
- 控制器 - URL routing HTTP module(一)
URL routing HTTP module 负责处理检查入站请求的 URL,并将它们分派到最合理的处理器上.URL routing HTTP module 也替代了旧版本的 ASP.NET URL ...
- 【ASP.NET MVC 学习笔记】- 08 URL Routing
本文参考:http://www.cnblogs.com/willick/p/3343105.html 1.URL Routing告诉MVC如何正确的定位Controller和Action. 2.URL ...
- ios访问web页面<div>点击事件不起效果,以及alert()显示url的解决办法
ios访问web页面<div>点击不起效果,在其div上添加style=”cursor:pointer:“ jquery web页面动态append()事件调用方法:$(document) ...
- [译]Angular-ui 之 Url Routing
◄ 前一篇 (Multiple Named Views) 下一篇 (The Components) ► 在你的应用中多数的状态都是基于特定的url地址的.Url Routing机制绝不是在状态 ...
- spring如何解决单例循环依赖问题?
更多文章点击--spring源码分析系列 1.spring循环依赖场景2.循环依赖解决方式: 三级缓存 1.spring循环引用场景 循环依赖的产生可能有很多种情况,例如: A的构造方法中依赖了B的实 ...
随机推荐
- Java垃圾回收之回收算法
问题:谈谈你了解的垃圾回收算法 1.标记-清除算法(Mark and Sweep) 标记:从跟集合进行扫描,对存活的对象进行标记 清除:对堆内存从头到尾进行线性遍历,回收不可达对象内存 优点:简单 缺 ...
- 牛客noip前集训营(第一场)提高T1
链接:https://www.nowcoder.com/acm/contest/172/A来源:牛客网 题目描述 小N得到了一个非常神奇的序列A.这个序列长度为N,下标从1开始.A的一个子区间对应一个 ...
- bzoj 3555 企鹅QQ
https://www.lydsy.com/JudgeOnline/problem.php?id=3555 枚举每一位字符,计算字符两侧的哈希值,然后进行比较,用map或排序记录出与其相同的字符串数量 ...
- 2018美赛准备之路——Matlab基础——基本运算符号表示
π pi ln(x) log(x) lg(x) log10(x) log2(x) log2(x) 根号 sqrt(x) x的y次方 x^y e的y次方 exp(y)
- 环境变量HISTCONTROL命令及对快捷键Ctrl+o命令的影响
在linux中环境变量HISTCONTROL可以控制历史的记录方式. HISTCONTROL有以下的选项: ignoredups 默认,忽略重复命令 ignorespace ...
- C++实现链队类——合肥工业大学数据结构实验5:链式队列
实验5 5.1 实验目的 熟练掌握队列的顺序链式存储结构. 熟练掌握队列的有关算法设计,并在链队列上实现. 根据具体给定的需求,合理设计并实现相关结构和算法. 5.2 实验要求 5.2.1链队列实验要 ...
- python基础——4(数字、字符串、列表类型的内置方法介绍)
目录 一.可变与不可变类型 二.数字类型 三.字符串类型 四.列表类型 一.可变与不可变类型 可变类型:值改变,但是id不变,证明就是在改变原值,是可变类型 不可变类型:值改变,id也跟着改变,证明产 ...
- Apollo配置中心的使用
1. 自己搭建Apollo配置中心 碰到如下错误: nested exception is org.hibernate.HibernateException: Access to DialectRes ...
- JavaScript中离线应用和客户端存储(cookies、sessionStorage、localStorage)
一.离线应用 所谓离线web应用,就是在设备不能上网的情况下仍然可以运行的应用. 开发离线web应用需要几个步骤:首先,确保应用知道设备是否能上网,以便下一步执行正确的操作:然后,应用还必须能访问一定 ...
- python之图形界面GUI开发 Tkinter 2014-4-7
1.导入Tkinter 可以使用以下三种方法(1)from Tkinter import *#导入Tkinter(2)import TkinterTkinter.methodA使用 Tkinter.m ...