好吧,先簡單的說一下是個啥情況。
沒有什么比圖更直接了
這個就是一個demo演示
大家看到圖就明白了,在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中之后,問題就來了!?。?/h4>
-
添加進去之后,全都變成了null
添加進去之后,全都變成了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 = 。=