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
}
}