Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift UIKit UINavigationController的快捷UI隐藏导航栏(rootViewController:)_Swift_Swiftui_Uikit - Fatal编程技术网

Swift UIKit UINavigationController的快捷UI隐藏导航栏(rootViewController:)

Swift UIKit UINavigationController的快捷UI隐藏导航栏(rootViewController:),swift,swiftui,uikit,Swift,Swiftui,Uikit,我有一个快捷的视图: struct Content View: View { var body: some View { Text("Content view") } } 我使用了UIKit创建的菜单。我的视图应该是UIViewController或UINavigationController。为了显示我的快捷界面视图,我将视图设置在UINavigationController中: let navigationController = UIHostingCo

我有一个快捷的视图:

struct Content View: View {
  var body: some View {
    Text("Content view")
  }
}
我使用了UIKit创建的菜单。我的视图应该是
UIViewController
UINavigationController
。为了显示我的快捷界面视图,我将视图设置在
UINavigationController
中:

let navigationController = UIHostingController(rootView: Content()).inNavigation()

// inNavigation()
extension UIViewController{
    func inNavigation() -> UIViewController {
        let vc = self
        let navigationController = UINavigationController(rootViewController: self)
        vc.navigationController?.navigationBar.isHidden = true
        vc.navigationController?.setNavigationBarHidden(true, animated: true)
        vc.navigationController?.isNavigationBarHidden = true
        vc.navigationController?.isToolbarHidden = true
        vc.navigationController?.setToolbarHidden(true, animated: true)
        vc.navigationController?.accessibilityFrame = .zero
        
        navigationController.navigationController?.navigationBar.isHidden = true
        navigationController.navigationController?.setNavigationBarHidden(true, animated: true)
        navigationController.navigationController?.isNavigationBarHidden = true
        navigationController.navigationController?.isToolbarHidden = true
        navigationController.navigationController?.setToolbarHidden(true, animated: true)
        navigationController.accessibilityFrame = .zero
        return navigationController
    }
}
我试图隐藏导航栏。但它仍然显示:


视图层次结构中应该有
UINavigationController
,这样才能生效

这里是一个有效的变体,假设您将它注入到
SceneDelegate
中的窗口中(使用Xcode 11.4/iOS 13.4进行测试)

extension UIViewController{
    func inNavigation() -> UIViewController {
        let navigationController = UINavigationController(rootViewController: self)
        DispatchQueue.main.async {
            navigationController.isNavigationBarHidden = true
        }
        return navigationController
    }
}