iOS,object-c和swift开发IOS | MACiOS

iOS关于ScrollView添加多个Viewcontrolle

2016-08-02  本文已影响3472人  Codepgq

好吧,先简单的说一下是个啥情况。
没有什么比图更直接了


这个就是一个demo演示

大家看到图就明白了,在rootVC中是存在Navigationcontroller的,然后在VC1-3中并没有,但是一开始楼主不知道啊。

然后楼主就:

事实就是:哎哟喂,脸好疼。

发现并不能行。

方案二开始了

  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);

哎呀我去,什么鬼,怎么又都是null,不是说好疼我的么。

行,你牛逼。

楼主就在进行排查中……

发现一个问题:在还没有加入到scrollview中之前,数组中的每个viewcontroller都是存在navigationcontroller的。在把每个viewcontroller的view添加到scrollview中之后,问题就来了!!!

这下楼主就懵逼了

让我好好地哭一会儿....那人哭吧哭吧不是罪......

好吧,这个问题我现在也还没有搞懂。。。。

最后,在网上苦苦寻觅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

上一篇 下一篇

猜你喜欢

热点阅读