具体怎么写的java url拼接参数方法我也不清楚,没有实现

怎么把js中通过url同时传多个参数怎么写_百度知道
怎么把js中通过url同时传多个参数怎么写
我有更好的答案
url传递多个参数,第一个参数使用?号进行连接,格式为key=value,后面参数用&分隔最终格式如:url?key=value&key=value举例:url地址?a=2&b=3
这里传递了2个参数a和b
采纳率:73%
用post方法啊,这个长度只限于服务器啊,然后用ajax啊,这个param参数啊,封装一个json就可以了啊,然后就可以传递了啊,很好的啊,jquery的ajax很好使啊,祝你传输快乐啊
本回答被提问者和网友采纳
ocation.html?a=1&b=2&c=3'这种;index.href = &#39
为您推荐:
其他类似问题
参数的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。当前位置: →
→ 伪另类方法实现URL重写
伪另类方法实现URL重写
& 作者及来源: Feather - 博客园 &
&收藏到→_→:
摘要: 【伪】另类方法实现URL重写
"伪另类方法实现URL重写"::
关于url重写的讨论很多,方法也很多,主要也无异于两种,一个是通过配置服务器,一个是通过配置asp.net的ihttpmodule等底层设置。实现这些功能的组件网上也不少,asp.net mvc框架里面也有一个独立于该框架的url重写组件,里面具体怎么实现,我也不太清楚,毕竟我也只是弱弱地玩了一下而已。
可能很多人看这我这个url就看出来是怎么实现的,如果你就是这些大牛,又或者你觉得我的url不够帅,请跳过。
嗯,本文的主旨有两个:帅和伪。就是用最伪的方法尽可能地让url更帅,本着这个原则,我们开始吧。
为了突出我们本方法的效果,增强 效应,我们先看看我们未经整容前的url:
文章列表页:www.vinqon.com/home.aspx?catid=3&page=2
第一次整容
第一个url奇丑无比,有两个参数,我们先把这两个参数组合一下,改成这样:
第一次整容:www.vinqon.com/home.aspx?catid=3-2
后台接收参数的动作要稍微改一下,可以把catid的值用spilt为数组或者用把n个参数分离出来。
现在好了点,就算是有n个参数,也顶多这样子:www.vinqon.com/home.aspx?catid=1-6-12-56
或者用斜杠做分隔符,看起来更加伪:www.vinqon.com/home.aspx?catid=3/6/12/56
第二次&第三次整容
看看上面那个,前后斜杠塞了这么多字符,感觉很不爽,我们看得出,这里的catid五个字母没有什么意义,用一个c代替一下看看。
第二次整容:www.vinqon.com/home.aspx?c=3/6/12/56
还是很恶心,那个c不要到底行不行呢?试一下:
www.vinqon.com/home.aspx?3/6/12/56
这下懵了,没有了c,3/16/12/56是不是成了&名值对应&中的名呢?
试一下获取:request.querystring[&3/16/12/56&],结果取了个null,这下奇怪了,服务器到底怎么理解这堆参数呢?
我又抱着尝试的心理,输出了一下:request.querystring.count,结果竟然为1!这么说服务器还是认为这是一个参数的,我立刻用了另外一个方式获取这个参数::request.querystring[0]
这次终于可以把这堆参数取出来了。看来此文来自: 马开东博客
转载请注明出处 网址:
,当我们不用名值对应方式表示参数,而是直接用一段字符串表示,服务器会把它当作一个匿名参数。
现在,让我们看看第三次整容的效果:
第三次整容:www.vinqon.com/home.aspx?3/6/12/56
现在,这个样子的网址让人好接受一点了,但是,既然都做到这个地步了,可不可以再找找办法把那个恶心的文件后缀隐藏一下呢?
第四次&第五次整容
有一个很好的办法,在iis中把home.aspx设置成默认首页,然后,url就可以变成这样了:
第四次整容:www.vinqon.com/?3/6/12/56
但是,这里带来了一个新的问题,每个页面都要这么帅,难道都设置成首页?即使这么设置了,也是行不通的。我这里的 是,做一个跳转页面。现在我们的默认首页还是设置成default.aspx,我们所要请求的每一个页面都作为一个参数解析。先看看效果:
第五次整容:www.vinqon.com/?home/3/6/12/56
default页面会用正则获取第一个参数作为页面地址,从而找到跳转页面,为了保存页面这么帅,我们使用&server.transfer方法实现跳转,它可以把当前request数据转移到目的页面,所以不需要大量修改原来页面解析参数的代码。
每一个页面的参数格式可能都不一样,所以我写了一堆regax数组,一个个尝试匹配,这种方式可能不太好,以后研究参考一下mvc框架的实现方式,重写一下这部分。
private string parseurl(string url)
stringbuilder sb = new stringbuilder();
regex[] reg = new regex[]{
new regex(@&(home|lab|books)/(\d*)-(\d*)&),
new regex(@&(home|lab|books)/(\d*)()&),
new regex(@&(edit|detail)/()()(\d*)&),
new regex(@&(home|lab|books|edit|login)&)
for (int i = 0; i & reg. i++)
match m = reg[i].match(url);
if (m.success)
sb.append(m.groups[1].value + &.aspx?&);
if (m.groups[2].value != &&) { sb.append(&catid=& + m.groups[2].value); }
if (m.groups[3].value != &&) { sb.append(&&index= & + m.groups[3].value); }
if (m.groups[4].value != &&) { sb.append(&&id=& + m.groups[4].value); }
return sb.tostring();
return &home.aspx&;
其实这种玩意有很多副作用,跟asp.net mvc框架一样,不能正常postback,这意味了很多服务器控件不能正常使用,而且这个问题可能是不能解决的。其实我个人是比较喜欢直接用html标签带提交表单的,感觉比较原生态一点。这些问题后续再说吧。
最后,对比一下吧:
整容前:www.vinqon.com/home.aspx?catid=3&page=2
整容后:www.vinqon.com/?home/3-2搜索此文相关文章:此文来自: 马开东博客
网址: 站长QQ
伪另类方法实现URL重写_博客园相关文章
博客园_总排行榜
博客园_最新
博客园_月排行榜
博客园_周排行榜
博客园_日排行榜主题 : ios 上
如何像PHP那样有 urldecode 函数
如何实现呢?注意不是encode哦-
级别: 新手上路
可可豆: 21 CB
威望: 23 点
在线时间: 265(时)
发自: Web Page
如何像PHP那样有 urldecode 函数
如何实现呢?注意不是encode哦-&&&
ios 上 &如何像PHP那样有 urldecode 函数 &如何实现呢?注意不是encode哦- &
比如&䴙 &使用urldecode后变成&?(fen)字
级别: 精灵王
可可豆: 13228 CB
威望: 13203 点
在线时间: 2272(时)
发自: Web Page
urlencode的目的是传输url安全的字符
比如中文, 例如"神"变成%C9%F1(如果是utf8则是%E7%A5%9E)
各种非字母的符号也会对应做编码, 比如& == %26.
而对应的urldecode就是一个还原的过程. 也就是说把%26还原为&. 中文同理
&
所以按说... 是不会有从 "? &使用urldecode后变成&?" 的情况. 至少从urlencode的原理上是这样.
至于你问的urldecode
参见NSURL.h, 其中
@interface NSString (NSURLUtilities)
&
/* Adds all percent escapes necessary to convert the receiver into a legal URL string. &Uses the given encoding to determine the correct percent escapes (returning nil if the given encoding cannot encode a particular character). &See CFURLCreateStringByAddingPercentEscapes in CFURL.h for more complex transformations
&*/
- (NSString *)stringByAddingPercentEscapesUsingEncoding:(NSStringEncoding)
&
/* Replaces all percent escapes with the matching characters as determined by the given encoding. &Returns nil if the transformation is not possible (i.e. the percent escapes give a byte sequence not legal in the given encoding). &See CFURLCreateStringByReplacingPercentEscapes in CFURL.h for more complex transformations
&*/
- (NSString *)stringByReplacingPercentEscapesUsingEncoding:(NSStringEncoding)
&
@end
stringByAddingPercentEscapesUsingEncoding:一般对应的是urlencode, 虽然不像一般的urlencode工具那样转换的那么全.

stringByReplacingPercentEscapesUsingEncoding:对应的就是urldecode了.
比如一个urlencode后的字符串
NSString *str = @"%68%74%74%70%3a%2f%2f%61%63%67%2e%67%61%6d%65%72%2e%63%6f%6d%2e%74%77%2f%73%65%61%72%63%68%2e%70%68%70%3f%65%6e%63%6f%64%65%3d%75%74%66%38%26%6b%77%3d%25%45%36%25%41%44%25%42%42%25%45%37%25%41%35%25%39%45";
NSLog(@"%@", [str stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding]);
NSLog(@"%@", [[str stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding] stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding]);
那么输出会是
http://acg.gamer.com.tw/search.php?encode=utf8&kw=%E6%AD%BB%E7%A5%9E
http://acg.gamer.com.tw/search.php?encode=utf8&kw=死神
级别: 新手上路
可可豆: 21 CB
威望: 23 点
在线时间: 265(时)
发自: Web Page
额 刚刚上面那个 已经被网站给转码了 所以显示的是原字符 之前那个 应该是
&空格#空格19737空格;
把空格去掉 你去百度urldecode 然后 把去掉空格后的字符&井19737; 放入 点击urldecode 就会变成 这个?(fen)字
级别: 新手上路
可可豆: 21 CB
威望: 23 点
在线时间: 265(时)
发自: Web Page
额 刚刚上面那个 已经被网站给转码了 所以显示的是原字符 之前那个 应该是
&空格#空格19737空格;
把空格去掉 你去百度urldecode 然后 把去掉空格后的字符&井19737; 放入 点击urldecode 就会变成 这个?(fen)字http://www.mytju.com/classCode/tools/urldecode_gb2312.asp
这是decode的地址 一些特殊的符号也可以decode
&gt分号 decode后变
级别: 精灵王
可可豆: 13228 CB
威望: 13203 点
在线时间: 2272(时)
发自: Web Page
ok, 你描述的这个问题, 属于http://en.wikipedia.org/wiki/Character_encodings_in_HTML#XML_character_references系统没有提供, 大概方法就是取出数字部分19737, 转成16进制 0x4D19, 然后拼上一个unicode标识在前面. 利用[xxxx stringByReplacingPercentEscapesUsingEncoding:NSUnicodeStringEncoding];来解, 比如变成@"
级别: 新手上路
可可豆: 21 CB
威望: 23 点
在线时间: 265(时)
发自: Web Page
额 貌似是你说的那么回事 呵呵 厉害 我试试去
级别: 新手上路
可可豆: 21 CB
威望: 23 点
在线时间: 265(时)
发自: Web Page
不知道面具兄 可否给个例子我啊
级别: 精灵王
可可豆: 13228 CB
威望: 13203 点
在线时间: 2272(时)
发自: Web Page
额. 后文被截掉了... 你可以参考https://github.com/mwaterfall/MWFeedParser/blob/master/Classes/GTMNSString%2BHTML.m 里面的gtm_stringByUnescapingFromHTML函数...
级别: 精灵王
可可豆: 13228 CB
威望: 13203 点
在线时间: 2272(时)
发自: Web Page
额. 后文被截掉了... 你可以参考https://github.com/mwaterfall/MWFeedParser/blob/master/Classes/GTMNSString%2BHTML.m 里面的gtm_stringByUnescapingFromHTML函数... 据说我直接回复之前那个, 你那边不会有通知... 于是再开一个答案好了...
关注本帖(如果有新回复会站内信通知您)
发帖、回帖都会得到可观的积分奖励。
按"Ctrl+Enter"直接提交
关注CocoaChina
关注微信 每日推荐
扫一扫 关注CVP公众号
扫一扫 浏览移动版他的最新文章
他的热门文章
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)iOS使用自定义URL实现控制器之间的跳转_iOS开发者_传送门
iOS使用自定义URL实现控制器之间的跳转
来自:Dariel在杭州 - 简书链接:http://www.jianshu.com/p/36a43202b0cd已获转载授权一个app往往有很多界面,而界面之间的跳转也就是对应控制器的跳转,控制器的跳转一般有两种情况 push 或者 modal,push 和 modal 的默认效果是系统提供的,但也可以自定义.有兴趣了解一下自定义的童鞋可以看这篇,iOS动画指南 - 6.可以很酷的转场动画. http://www.jianshu.com/p/802d47f0f311文章配图一、概述系统提供的push和modal方法有时并不能满足实际需求.比如,我们需要根据服务器返回的字段跳到指定的控制器,难道作判断吗?那显然不是最佳解决方案.其实我们可以这样: NSString *urlStr = @"dariel://twoitem?name=dariel&=213213";
[DCURLRouter pushURLString:urlStr animated:YES];
[DCURLRouter presentURLString:urlStr animated:YES completion:nil];对的,就是通过自定义URL+拼接参数,实现跳转.当然啦,DCURLRouter的功能远不止这点.2、DCURLRouter的基本使用DCURLRouter是一个通过简单配置就能够实现自定义URL跳转的开源组件: GitHubps.DCURLRouter是OC版的,后续看情况可能会有swift版本的.你的star是对我最好的支持.?1、简单集成只要把DCURLRouter这个文件夹拖到项目中就行了,后续会支持cocoapods.2、简单配置每一个自定义的URL都会有一个对应的控制器,那Xocde怎么知道呢?我们需要一个plist文件.打开DCURLRouter.plist文件内部结构大概长这样.除了自定义的URL上面还有http和https,这是当如果URL是网页链接的时候,DCURLRouter会自动跳转到自定义好的webView控制器,并把URL当成参数传递到webView控制器.是不是很方便. 下面的dariel字典就是用来存放自定义URL以及对应的控制器名称的.dariel就是自定义协议头了.以后就可以把自定义的URL和对应的控制器放这里了.加载DCURLRouter.plist文件数据- (BOOL)application:(UIApplication *)application
didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
[DCURLRouter loadConfigDictFromPlist:@"DCURLRouter.plist"];
return YES;
}3、 push和modal的使用所有的push和modal方法都可以通过DCURLRouter这个类方法来调用.这样在push和modal的时候就不需要拿到导航控制器或控制器再跳转了.也就是说,以后push和modal控制器跳转就不一定要在控制器中进行了.push控制器
[DCURLRouter pushURLString:@"dariel://twoitem" animated:YES];
NSString *urlStr = @"dariel://twoitem?name=dariel&=213213";
[DCURLRouter pushURLString:urlStr animated:YES];
NSDictionary *dict = @{@"userName":@"Hello", @"userid":@"32342"};
[DCURLRouter pushURLString:@"dariel://twoitem" query:dict animated:YES];
[DCURLRouter pushURLString:@"dariel://oneitem" query:dict animated:YES replace:YES];
TwoViewController *two = [[TwoViewController alloc] init];
[DCURLRouter pushViewController:two animated:YES];modal控制器用法和push差不多,只是这里添加了一个给modal出来的控制器加一个导航控制器的方法.
[DCURLRouter presentURLString:@"dariel://threeitem" animated:YES completion:nil];
NSString *urlStr = @"dariel://threeitem?name=dariel&=213213";
[DCURLRouter presentURLString:urlStr animated:YES completion:nil];
NSDictionary *dict = @{@"userName":@"Hello", @"userid":@"32342"};
[DCURLRouter presentURLString:@"dariel://threeitem" query:dict animated:YES completion:nil];
[DCURLRouter presentURLString:@"dariel://threeitem" animated:YES withNavigationClass:[UINavigationController class] completion:nil];
ThreeViewController *three = [[ThreeViewController alloc] init];
[DCURLRouter presentViewController:three animated:YES completion:nil];4、后退 pop 和 dismiss在实际开发中,好几次的界面的跳转组成了一个业务流程,整个业务流程结束后通常会要求返回最开始的界面,这就要让控制器连续后退好几次,但苹果是没有提供方法的.DCURLRouter给出了具体的实现方案.pop:
+ (void)popViewControllerAnimated:(BOOL)
+ (void)popTwiceViewControllerAnimated:(BOOL)
+ (void)popViewControllerWithTimes:(NSUInteger)times animated:(BOOL)
+ (void)popToRootViewControllerAnimated:(BOOL)dismiss:
+ (void)dismissViewControllerAnimated: (BOOL)flag completion: (void (^ __nullable)(void))
+ (void)dismissTwiceViewControllerAnimated: (BOOL)flag completion: (void (^ __nullable)(void))
+ (void)dismissViewControllerWithTimes:(NSUInteger)times animated: (BOOL)flag completion: (void (^ __nullable)(void))
+ (void)dismissToRootViewControllerAnimated: (BOOL)flag completion: (void (^ __nullable)(void))5、参数的接收,以及其它方法在3中如果在自定义了URL后面拼接了参数,或者用字典传递了参数,那么在目的控制器怎么接收呢?其实参数的接收很简单.只要导入这个分类#import "UIViewController+DCURLRouter.h"就行了,然后就能拿到这三个参数.NSLog(@"接收的参数%@", self.params);
NSLog(@"拿到URL:%@", self.originUrl);
NSLog(@"URL路径:%@", self.path);但有时我们我需要把值传递给发送push或者modal方的控制器,也就是逆传,也很简单,可以用代理或者block.有方法可以拿到当前的控制器,以及导航控制器
UIViewController *currentController = [DCURLRouter sharedDCURLRouter].currentViewController;
UINavigationController *currentNavgationController = [DCURLRouter sharedDCURLRouter].currentNavigationViewController;至此怎么使用就说完了,不知道感觉怎样呢?三、DCURLRouter自定义URL跳转的的实现原理.1、文件结构首先看一下几个文件分别是干什么用的?DCURLRouter是个单例,是主要类,所有对外的接口都是由它提供.我们就是用它通过调用类方法来实现自定义URL跳转的.DCURLNavgation也是单例,主要是用来重写和自定义系统的跳转方法.UIViewController+DCURLRouter 是UIViewController的分类,用于接收控制器的参数,以及用来创建控制器的.DCSingleton 单例的宏 只要在需要创建单例的类中分别导入.h文件中DCSingletonH(类名) .m文件中DCSingletonM(类名) ,这样就可以很方便的创建单例了.具体看代码.DCURLRouter.plist 就是用来存放与自定义URL对应的控制器名称的.2、一个自定义URL字符串的push原理跳转前我们需要为自定义的URL,设置一个对应的控制器.然后在对应的控制器中执行push操作,就能够push到对应的控制器了. [DCURLRouter pushURLString:@"dariel://threeitem" animated:YES];执行完上面一句代码,经过一些简单处理,最后会来到这里.#import "UIViewController+DCURLRouter.h"的这个方法中+ (UIViewController *)initFromURL:(NSURL *)url withQuery:(NSDictionary *)query fromConfig:(NSDictionary *)configDict
UIViewController *VC = nil;
NSString *
if(url.path == nil){
home = [NSString stringWithFormat:@"%@://%@", url.scheme, url.host];
home = [NSString stringWithFormat:@"%@://%@%@", url.scheme, url.host,url.path];
if([configDict.allKeys containsObject:url.scheme]){
id config = [configDict objectForKey:url.scheme];
Class class = nil;
if([config isKindOfClass:[NSString class]]){
NSClassFromString(config);
}else if([config isKindOfClass:[NSDictionary class]]){
NSDictionary *dict = (NSDictionary *)
if([dict.allKeys containsObject:home]){
NSClassFromString([dict objectForKey:home]);
if(class !=nil){
VC = [[class alloc]init];
if([VC respondsToSelector:@selector(open:withQuery:)]){
[VC open:url withQuery:query];
if ([url.scheme isEqualToString:@"http"] || [url.scheme isEqualToString:@"https"]) {
NSClassFromString([configDict objectForKey:url.scheme]);
VC.params = @{@"urlStr": [url absoluteString]};
return VC;
}在这个方法中将自定义URL创建成对应的控制器.具体啥的写的很明白了,就不详细说了啊!传参的接收注意到上面的[VC open:url withQuery:query];吗?是在下面这个方法中完成赋值的,但我们都有个常识,怎么在分类中保存属性呢?- (void)open:(NSURL *)url withQuery:(NSDictionary *)query{
self.path = [url path];
self.originUrl =
if (query) {
self.params =
self.params = [self paramsURL:url];
}答案是利用runtime,runtime可以为我们做好这个.- (void)setOriginUrl:(NSURL *)originUrl {
objc_setAssociatedObject(self, &URLoriginU,
originUrl,
OBJC_ASSOCIATION_RETAIN_NONATOMIC);
- (NSURL *)originUrl {
return objc_getAssociatedObject(self, &URLoriginU);
}在DCURLRouter方法中我们可以拿到在2中返回的VC,然后我们需要到DCURLNavgation中调用push方法了+ (void)pushURLString:(NSString *)urlString animated:(BOOL)animated {
UIViewController *viewController = [UIViewController initFromString:urlString fromConfig:[DCURLRouter sharedDCURLRouter].configDict];
[DCURLNavgation pushViewController:viewController animated:animated replace:NO];
}DCURLNavgation中怎样去处理push+ (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated replace:(BOOL)replace
if (!viewController) {
NSAssert(0, @"请添加与url相匹配的控制器到plist文件中,或者协议头可能写错了!");
if([viewController isKindOfClass:[UINavigationController class]]) {
[DCURLNavgation setRootViewController:viewController];
UINavigationController *navigationController = [DCURLNavgation sharedDCURLNavgation].currentNavigationViewController;
if (navigationController) {
if (replace && [navigationController.viewControllers.lastObject isKindOfClass:[viewController class]]) {
NSArray *viewControllers = [navigationController.viewControllers subarrayWithRange:NSMakeRange(0, navigationController.viewControllers.count-1)];
[navigationController setViewControllers:[viewControllers arrayByAddingObject:viewController] animated:animated];
[navigationController pushViewController:viewController animated:animated];
navigationController = [[UINavigationController alloc]initWithRootViewController:viewController];
[DCURLNavgation sharedDCURLNavgation].applicationDelegate.window.rootViewController = navigationC
}代码写的很详细,就不详细说了啊!大概同理,DCURLNavgation中怎样去处理modal+ (void)presentViewController:(UIViewController *)viewController animated: (BOOL)flag completion:(void (^ __nullable)(void))completion
if (!viewController) {
NSAssert(0, @"请添加与url相匹配的控制器到plist文件中,或者协议头可能写错了!");
UIViewController *currentViewController = [[DCURLNavgation sharedDCURLNavgation] currentViewController];
if (currentViewController) {
[currentViewController presentViewController:viewController animated:flag completion:completion];
[DCURLNavgation sharedDCURLNavgation].applicationDelegate.window.rootViewController = viewC
}代码也很详细,有问题可以在下面留言!四、怎样去加载一个自定义的webView控制器在上面3.2.2中,不知道有没有注意到那个对网络地址的处理if ([url.scheme isEqualToString:@"http"] || [url.scheme isEqualToString:@"https"]) {
class = NSClassFromString([configDict objectForKey:url.scheme]);
VC.params = @{@"urlStr": [url absoluteString]};如果协议头是http或者https的情况,我们可以通过[configDict objectForKey:url.scheme]拿到自定义webView控制器的名称,然后再去创建webView控制器,之后我们是将url通过参数传到webView控制器中,最后在webView控制器中加载对应的webview.5、关于怎样一次性pop和dismiss多层控制器的实现原理.pop控制器+ (void)popViewControllerWithTimes:(NSUInteger)times animated:(BOOL)animated {
UIViewController *currentViewController = [[DCURLNavgation sharedDCURLNavgation] currentViewController];
NSUInteger count = currentViewController.navigationController.viewControllers.count;
if(currentViewController){
if(currentViewController.navigationController) {
if (count > times){
[currentViewController.navigationController popToViewController:[currentViewController.navigationController.viewControllers objectAtIndex:count-1-times] animated:animated];
NSAssert(0, @"确定可以pop掉那么多控制器?");
}popViewController实现的思路比较简单,因为可以拿到导航控制器上的所有控制器,然后通过objectAtIndex这个方法.这样就能做到了.dismiss控制器+ (void)dismissViewControllerWithTimes:(NSUInteger)times animated: (BOOL)flag completion: (void (^ __nullable)(void))completion {
UIViewController *rootVC = [[DCURLNavgation sharedDCURLNavgation] currentViewController];
if (rootVC) {
while (times > 0) {
rootVC = rootVC.presentingViewController;
times -= 1;
[rootVC dismissViewControllerAnimated:YES completion:completion];
if (!rootVC.presentedViewController) {
NSAssert(0, @"确定能dismiss掉这么多控制器?");
}dismissViewController这个的实现思路就有点特别了,因为没有办法拿到所有的modal出来的控制器,只能拿到上一个,所以这边就是用的while循环实现的.5、总结大概讲了下具体的使用和大概功能的实现,还有很多具体实现细节,有兴趣的童鞋可以看给出的源码!DCURLRouter组件源码:
https://github.com/DarielChen/DCURLRouter欢迎使用,欢迎star,你的star就是对我最好的鼓励.●本文编号98,以后想阅读这篇文章直接输入98即可。●输入m可以获取到文章目录《》涵盖:程序人生、算法与数据结构、黑客技术与网络安全、大数据技术、前端开发、Java、Python、Web开发、安卓开发、iOS开发、C/C++、.NET、Linux、数据库、运维等。小编推荐↓↓↓ 掘金是一个高质量的技术社区,从 Swift 到 React Native,性能优化到动效源码,让你不错过 iOS 开发的每一个技术干货。长按图片二维码识别或者各大应用市场搜索「掘金」,技术干货尽在掌握中。点击「阅读原文」,下载掘金。
觉得不错,分享给更多人看到
iOS开发者 微信二维码
分享这篇文章
9月24日 0:50
iOS开发者 最新头条文章
iOS开发者 热门头条文章

我要回帖

更多关于 java url拼接参数方法 的文章

 

随机推荐