美文网首页
添加新手引导页前跳转到别的页面的处理办法

添加新手引导页前跳转到别的页面的处理办法

作者: biyu6 | 来源:发表于2018-06-20 14:41 被阅读0次

简单的新手引导,遇到了最复杂的一种情况,解决办法记录如下:
1.项目的现状:
APP中有5个TabBar:首页(系统添加)、自定义横屏、系统页2、自定义竖屏、系统页3。(2个自定义菜单(一个横屏、一个竖屏)、3个系统菜单(都是竖屏))。

2.需求描述:第一次进入首页,先请求数据,判断是否有“我的兴趣”模块,如果有给它添加一个新手引导的示意图,没有就不添加。

3.最初的解决及问题:进入首页,请求数据,判断有-添加一个View在keyWindow上;问题是,如果数据请求比较慢,在判断是否有“我的兴趣”模块之前,点击了其他的tabBar菜单,然后数据回来了,会把新手引导添加到其他的菜单中。

4.最终的解决办法:
1..在第一次添加的时候判断self.tabBarController.selectedIndex 是不是等于0(首页),如果等于0,才添加。不等于0,不添加,并记录一个全局的标识,来表示当前应该添加新手引导,但是由于不在首页,所以暂时不添加。
2.在首页的viewWillAppear中,判断上一步的那个标识,如果应该添加,那么回到首页的时候,再添加新手引导。
3.如果你一进来就点击了另外两个自定义的tabBar菜单,那么当请求结果回来告诉你应该添加新手引导时,self.tabBarController.selectedIndex 其实是等于0的,这时候如果你原来写的是添加到window上,那么就会直接添加到当前你选中的自定义菜单,所以,不能添加到window上,而应该添加到self.tabBarController.view上。因为两个自定义的tabBar菜单并不在self.tabBarController.view上,这时如果你把自定义菜单关闭了,就会直接回到首页,会发现新手引导已经添加在首页上了。
4.因为首页时竖屏的,所以在你进入横屏的自定义菜单时,添加新手引导如果是按照屏幕的宽高来做的约束,就会有问题,所以新手引导页View的宽高应该设置为: MIN(ScreenWidth, ScreenHeight) 和 MAX(ScreenWidth, ScreenHeight);

代码简单,就不写了,如果以后用到了,参考CNT项目的CNTChannelViewController类

相关文章

网友评论

      本文标题:添加新手引导页前跳转到别的页面的处理办法

      本文链接:https://www.haomeiwen.com/subject/kaqxyftx.html