好吧,先简单的说一下是个啥情况。
没有什么比图更直接了
大家看到图就明白了,在rootVC中是存在Navigationcontroller的,然后在VC1-3中并没有,但是一开始楼主不知道啊。
然后楼主就:
- VC1-3全部继承rootVC,楼主想着这样子是不是就差不多了,我是你的子类,你有的我都应该有,恩,没错。
事实就是:哎哟喂,脸好疼。
发现并不能行。
方案二开始了
- 我自己包装一个还不行么!
于是乎有了下面的代码
UIStoryboard *storyBoard=[UIStoryboard storyboardWithName:@"XXXX" bundle:nil];
self.VC2 = [storyBoard instantiateViewControllerWithIdentifier:@"XXX"];
PLNavigationViewController * NAV2 = [[PLNavigationViewController alloc]initWithRootViewController:self.VC2];
NSLog(@"singVC2 - %@",self.VC2.navigationController);
self.VC1 = [[WatchViewController alloc]init];
UINavigationController * NAV1 = [[UINavigationController alloc]initWithRootViewController:self.VC1];
NSLog(@"wathcVC - %@",self.VC1.navigationController);
self.VC3= [[ListenViewController alloc]init];
PLNavigationViewController * NAV3 = [[PLNavigationViewController alloc]initWithRootViewController:VC3];
NSLog(@"listenVC - %@",self.VC3.navigationController);
果然代码还是疼我的,输出之后都是存在navigationcontroller的,这下子我就放心了。然后一个方法全部给加到scrollview中。
啦啦啦啦,测试进行中……
哎呀我去,什么鬼,怎么又都是null,不是说好疼我的么。
行,你牛逼。
楼主就在进行排查中……
发现一个问题:在还没有加入到scrollview中之前,数组中的每个viewcontroller都是存在navigationcontroller的。在把每个viewcontroller的view添加到scrollview中之后,问题就来了!!!
-
添加进去之后,全都变成了null
这下楼主就懵逼了
- 手动脑补懵逼...
为什么加入进去就变成空了
让我好好地哭一会儿....那人哭吧哭吧不是罪......
好吧,这个问题我现在也还没有搞懂。。。。
最后,在网上苦苦寻觅N久之后,终于找到一个解决方案。要是有大神无意中看到我的碎碎念,有更好的解决方案还望告知啊。。。小弟感激不尽,以身相许~~~那就免了
把他们作为子viewcontroller加入到当前的viewcontroller中,也就是rootVC
[self addChildViewController:self.VC1];
[self addChildViewController:self.VC2];
[self addChildViewController:self.VC3];
//这样子加完后你就会发现,卧槽 VC3怎么在最前面,不行
//你得给我滚开
[self fitFrameForChildViewController:self];
//
这个就是那个方法啦
- (void)fitFrameForChildViewController:(UIViewController *)chileViewController{
CGRect frame = self.view.frame;
frame.origin.y = 0;
chileViewController.view.frame = frame;
}
然后你就会发现你在root上面的写的界面没有问题,也不会出现遮挡,而那三个VC也可以使用push
-
再也不用担心代码不爱你了………… 我觉得这个很重要,加粗 - -!
时间比较仓促,也没怎么整理!!!!将就将就吧。
-
有时间考虑写一个demo = 。=