我最近用最新的Xcode开始了一个新项目,现在有了该功能
self.navigationController?.pushViewController
推送新的控制器不起作用。
我已经查看了类似的答案,并检查了我自己的旧项目在运行中,他们提到导航控制器为nil
,但我认为我已经解决了。
我认为这与新的SceneDelegate
文件有关,这是视图管理方式的一部分。
以下是有关VC
文件中弹出的第一个SceneDelegate
的代码。
let nav1 = UINavigationController()
let mainView = MainViewController(nibName: nil, bundle: nil) //ViewController = Name of your controller
nav1.viewControllers = [mainView]
// Use a UIHostingController as window root view controller.
if let windowScene = scene as? UIWindowScene {
let window = UIWindow(windowScene: windowScene)
// window.rootViewController = UIHostingController(rootView: contentView)
window.rootViewController = nav1
self.window = window
window.makeKeyAndVisible()
}
答案 0 :(得分:2)
删除SceneDelegate.swift文件及其委托方法。
答案 1 :(得分:0)
我在新项目的Xcode 11.1中遇到了同样的问题。
删除 SceneDelegate.swift 文件,并从 AppDelegate.swift 中删除其委托方法。这个解决方案对我有用。
我用Xcode 11和Swift 5创建的开源代码。 https://github.com/gauravparvadiya/swift-news-reddit
答案 2 :(得分:0)
就像他们上面说的, 删除SceneDelegate.swift, AppDelegate.swift中的sceneDelegate方法 加 从plist文件中删除它们: UISceneConfigurations UIWindowSceneSessionRoleApplication
key: UISceneConfigurationName
value: Default Configuration
key: UISceneDelegateClassName</key>
value: $(PRODUCT_MODULE_NAME).SceneDelegate
key: UISceneStoryboardFile
value: Main
如果无法删除它们,则在运行应用程序时会出现黑色视图。但是,控制台中的错误消息应有助于引导您从plist中删除必要的项目。