iOS界面路由和连续跳转的问题

1 目前的界面路由所用到的是JLRoutes,但是我们项目中用到的是已经封装并重写过的;用的时候步骤比较方便:

(1) 在对应的界面的load方法里面注册:如下

[JLRoutessn_addRoute:[NSStringstringWithFormat:@"/%@/%@",kUrPatternlType,kTwo]handler:^id(NSDictionary*parameters) {

SecondViewController*lifePayHistoryVC = [[SecondViewControlleralloc]init];

returnlifePayHistoryVC;

//里面的返回要写,而且要初始化,在这里我理解,此block里面的返回就是理由所谓的key对应的value

}];

(2) 在需要界面跳转的地方,利用封装好的方法进行跳转:如下

[RoutespushViewControllerWithRoutesUrl:[NSStringstringWithFormat:@"%@%@/%@",kScheme,kUrPatternlType,@"3"]params:@{@"color":[UIColoryellowColor]}fromNav:self.navigationControllerAnimate:YES];

//注意:对应的url格式要满足,不能乱写,虽然我现在也十分清楚,而且(1)和(2)中的留意,不能一味的照搬

方法对应的实现:

+ (id)routeURL:(NSString*)urlString parmas:(NSDictionary*)params

{

return[JLRoutessn_routeURL:[NSURLURLWithString:urlString]withParameters:params];

}

+ (void)pushViewControllerWithRoutesUrl:(NSString*_Nonnull)url params:(NSDictionary*__nullable)parmas fromNav:(UINavigationController*_Nonnull)fromNav Animate:(BOOL)animate

{

if(url ==nil||url.length==0)

return;

idobject = [selfrouteURL:urlparmas:parmas];

if([objectisKindOfClass:[UIViewControllerclass]])

{

UIViewController*vc = (UIViewController*)[RoutesrouteURL:urlparmas:parmas];

if([NSThreadcurrentThread] != [NSThreadmainThread])

{

dispatch_async(dispatch_get_main_queue(), ^{

if(vc && fromNav)

{

[fromNavpushViewController:vcanimated:animate];

}

});

}

else

{

if(vc && fromNav)

{

[fromNavpushViewController:vcanimated:animate];

}

}

}

}

2 但是 ,在我逐渐理解的过程中发现了一些问题;我今天测试在 Viewcontroller里面这样,push到第五个界面:

因为Viewcontroller是这样来的:

目前未发现什么问题;而此时我想要从第五个界面直接跳转到第二个,于是我这样写

结果方法确实走了,也push了,但是不知道到的是哪一个,反正不是第二个,因为title没有

如果push到了第二个或者其他的,那么title最起码会有,不仅如此,当我连续点击两次back时,就崩溃了

看原因因该是连续push导致的;

自己的分析:push到第五个vc时,view还没展示,就又push到另一个了,因为是在viewdidload里面push的,但是,在Viewcontroller时的viewdidload里面也push了啊,却能够push到第五个。。。这些是为什么呢,不太懂,也不知道崩溃的真正原因;欢迎知道帮助;

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容