iOS 设置navigationController背景颜色失效

2021-11-30  本文已影响0人  Amuxiaomu

今天在做功能主题适配是发现,一个页面navigation背景颜色设置一直失败.查看代码也没有覆盖等操作,做了很多排除法.发现是其中一个功能页面导致的.但是在这个功能页面里面还是没法发现是生原因导致(因为没有对navigation进行操作).
然后想了一下我这个页面集成SegmentController(封装了一个可切换的页面).然后这个页面需要对子ViewController的生命周期做管理,就需要对子ViewController进行操作

加载

/**
 加载View
 */
- (UIView *)loadViewWithIndex:(NSInteger)index {
    id container = self.viewArray[index];
    UIView *view = nil;
    if ([container isKindOfClass:[UIView class]]) {
        view = container;
    }
    if ([container isKindOfClass:[UIViewController class]]) {
        UIViewController *viewController = container;
        [self addChildViewController:viewController];
        [viewController didMoveToParentViewController:self];
        view = viewController.view;
    }
    
    if (view) {
        [self.scrollView addSubview:view];
    }
    
    return view;
}

移除

/**
 移除View
 */
- (UIView *)removeViewWithIndex:(NSInteger)index {
    id container = self.viewArray[index];
    UIView *view = nil;
    if ([container isKindOfClass:[UIView class]]) {
        view = container;
    }
    if ([container isKindOfClass:[UIViewController class]]) {
        UIViewController *viewController = container;
        view = viewController.view;
        [viewController willMoveToParentViewController:nil];
        [viewController removeFromParentViewController];
        [viewController viewWillDisappear:NO];
    }
    [view removeFromSuperview];
    
    return view;
}

然后就在想是不是在子ViewController中设置导航栏的背景颜色才有效果.最终试了一下确实可以.

总结:如果一个控制机对子ViewController进行了管理,导航栏的颜色就需要在子ViewController进行设置.

上一篇 下一篇

猜你喜欢

热点阅读