我想隐藏iPhone顶部的状态栏。我可以在我的控制器上添加以下代码来做到这一点。如果我的父控制器有此代码,它可以工作。但我想要的是允许我的嵌套控制器隐藏状态栏。如果我在我的嵌套控制器上添加此代码,它可以产生任何效果。如何在我的嵌套控制器上执行此操作?
override func prefersStatusBarHidden() -> Bool {
return true
}
在你的父母中:
目标-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
。
在 child 中调用 setNeedsStatusBarAppearanceUpdate
,让系统知道当前状态栏外观无效,系统需要再次调用prefersStatusBarHidden
。
Kymer指出的那样,正确的方法是覆盖childViewControllerForStatusBarHidden
:
override var childViewControllerForStatusBarHidden: UIViewController? {
return childViewControllers.last
}