美文网首页
如何像支付宝首页是tabbar+navigation,点击蚂蚁聚

如何像支付宝首页是tabbar+navigation,点击蚂蚁聚

作者: 向晚forever | 来源:发表于2017-03-07 10:23 被阅读148次

    今天看到支付宝是tabbar+4个navgation,在首页点击蚂蚁聚宝之后进去又是tabbar+navgation这种页面。
    然后我也去做了这种功能,遇到了一些问题。求解决:
    首先第一步的tabbar+4个navgation没有问题,在其中一个Controller里面跳转到新的tabbar+navgation。
    问题1:

    UITabBarController * tab        = [[UITabBarController alloc]init];
    TestCtl  * testCtl = [[AdDialViewCtl alloc]init];
    [tabVcs addObject: testCtl];
    tab.viewControllers = tabVcs;
    tab.hidesBottomBarWhenPushed = YES;
    [self.navigationController pushViewController:tab animated:YES];
    

    push过去发现,TestCtl这个控制器不能修改title。因为我push的是UITabBarController,所以设置self.navigationItem.title这个是没有用的。

    问题2: 然后我把testCtl添加到navgation里面,发现又有新的问题出来了

    UINavigationController * nav  = [[UINavigationController alloc] initWithRootViewController: testCtl];
    [tabVcs addObject: nav];
    tab.viewControllers = tabVcs;
    [self.navigationController pushViewController:tab animated:YES];
    

    这样title可以设置,但是因为是init UINavigationController所以肯定没法pop回去。
    但是看支付宝实现了这个效果。

    pop不回去的原因确实是因为navigationController拿错了,我在代码上拿的是self的navigationController,也就是当前添加到TabbarController的ViewController的导航栏,这个导航栏是pop不回去的。
    我们应该拿到push TabbarController的这个导航栏,代码如下:

    UITabBarController * tabbarCtl = self.tabBarController;
    UINavigationController * nav = tabbarCtl.navigationController;
    

    这样就可以pop回去

    相关文章

      网友评论

          本文标题:如何像支付宝首页是tabbar+navigation,点击蚂蚁聚

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