I love iOSiOS实用技能iOS知识点

APP中多种样式导航栏的处理办法

2016-11-25  本文已影响268人  soulDxl

项目中有需求,每个页面的导航栏颜色不一样,刚开始不觉得有什么问题,但是操作后发现是个坑啊,用手势返回的时候,两个控制器的导航栏就会出现奇怪的问题。导航栏作为根控制器,正常的话只有一个,更改一个页面导航栏的颜色,另外一个就变化了。上网查看后,大概有几种解决办法。

Snip20161125_2.png

方法一和三是参考一篇博客的(想了解的童鞋可以点击这里了解一下),还没有具体的实践过,有时间还要试试。我下面重点说一下方法二,我使用的方法。

正常导航栏是不可以将导航栏添加子控制器的。我们需要进行一下包装处理,把我们将要push的控制器包裹一层导航栏。如下

//包装过程
-(PackViewController *)packViewController:(UIViewController *)viewController
{
    PackNavController *packNav = [[PackNavController alloc] init];

    packNav.viewControllers = @[viewController];
    
    [self addChildViewController:packNav];
    
    self.packNav = packNav;

    return self;
}
   // 注意, 这里压入的是一个包装过后的控制器
    PackViewController *packViewController = [[PackViewController new] packViewController:viewController];
    [self.navigationController pushViewController:packViewController animated:animated];

使用的时候

    XLNavgationController *nav = [[XLNavgationController alloc]
                                  initWithRootViewController:[[ViewController alloc] init]];
    [self.window setRootViewController:nav];
    NextViewController *push = [[NextViewController alloc] init];
    [self.navigationController pushViewController:push animated:YES];

大致这样的过程,里面具体的实现可以参考Demo,代码里有比较详细的处理。

不足的地方,欢迎指出。😀

上一篇下一篇

猜你喜欢

热点阅读