The UINavigationController, UISplitViewController and UITabBarController do not forward on preferredStatusBarStyle calls to its child view controllers.

Extensions should fix the problem.

extension UISplitViewController {
    override open var childForStatusBarStyle: UIViewController? {
        return self.viewControllers.first
    }
}

extension UINavigationController {
    override open var childForStatusBarStyle: UIViewController? {
        return self.topViewController
    }
}