一个业务造成的Bug

整个事是这样子的,

一个业务造成的Bug_第1张图片
VC 流向图

很明显,从VCA -> VCB -> VCC -> VCD,后来由于业务关系,
直接从VCA -> VCC -> VCD,在VCD里面就无法UnWind回到VCB了。
首先我可以确认segue的Identifier是存在的,再VC D里面把navigation里面的viewControllers打印出来,发现是没有VC B这个VC的。回头看了一下应用,原来根本没有打开过VCB,真是想死的心都有了...

解决方法一:
通过Storyboard 初始化VCB,然后把self.nagivation.viewControllers这个数组拿出来,把VCB Insert到这个数组里,再把这个数组set回到self.nagivation.viewControllers。这样是可以的。

解决方法二:
遍历self.nagivation.viewControllers查询里面是否有VCB,如果没有,则回到VCA。

这里有个知识点:
self.navigation.viewControllers是可以赋值的。
这个VC的数组决定了你navigation的VC。
比如:当前
navigation.viewControllers = @[vcA,vcB];
然后
navigation.viewControllers = @[vcA,vcB,vcC];
这时会push一个vcC到页面的最顶层。
但是如果
navigation.viewControllers = @[vcA];
这时会pop到vcA上面。

一个小小的笔记,比较乱

你可能感兴趣的:(一个业务造成的Bug)