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进行设置.