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到第五个界面:

iOS界面路由和连续跳转的问题_第1张图片

因为Viewcontroller是这样来的:

iOS界面路由和连续跳转的问题_第2张图片

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

iOS界面路由和连续跳转的问题_第3张图片

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

iOS界面路由和连续跳转的问题_第4张图片

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

iOS界面路由和连续跳转的问题_第5张图片

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

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

iOS界面路由和连续跳转的问题_第6张图片

你可能感兴趣的:(iOS界面路由和连续跳转的问题)