我想隐藏iphone顶部的状态栏。我可以在我的控制器上添加以下代码来执行此操作。如果我的父控制器有这个代码,它可以工作。但我想要的是允许我的嵌套控制器隐藏状态栏。如果我在嵌套控制器上添加此代码,它会起作用。怎么能在我的嵌套控制器上做到?
override func prefersStatusBarHidden() -> Bool {
return true
}
答案 0 :(得分:3)
正如Kymer指出的那样,正确的方法是覆盖childViewControllerForStatusBarHidden
:
override var childViewControllerForStatusBarHidden: UIViewController? {
return childViewControllers.last
}
答案 1 :(得分:2)
在你的父母:
目标-C
- (BOOL)prefersStatusBarHidden {
if(self.childViewControllers.count > 0) {
return [self.childViewControllers.lastObject prefersStatusBarHidden];
}
return YES;// or any other default value
}
夫特:
override func prefersStatusBarHidden() -> Bool {
if (childViewControllers.count > 0) {
childViewControllers.last?.prefersStatusBarHidden()
}
return true
}
在您的孩子VC中呼叫[self setNeedsStatusBarAppearanceUpdate];
,例如viewDidLoad
目标是询问子视图控制器(如果存在)关于它的prefersStatusBarHidden
。
在子级中调用setNeedsStatusBarAppearanceUpdate
,让系统知道当前状态栏的外观无效,并且系统需要再次调用prefersStatusBarHidden
。