0
votes

self.navigationController? .pushViewController ne fonctionne pas avec Xcode 11.1

J'ai récemment commencé un nouveau projet avec le dernier Xcode et maintenant la fonction self.navigationController? .pushViewController pour pousser un nouveau contrôleur ne fonctionne pas.

J'ai regardé des réponses similaires et vérifié mes propres anciens projets où cela fonctionne, ils ont mentionné que le contrôleur de navigation était nil mais je pensais avoir résolu cela.

Je pense que cela a à voir avec le nouveau fichier SceneDelegate qui fait partie de la façon dont les vues sont gérées.

Voici le code du premier VC qui apparaît dans l'application dans le fichier 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()
        }


2 commentaires

Même problème et j'essaie toujours de le résoudre. Si ennuyant


Je suis capable de supprimer des storyboards mais pour une raison quelconque, je ne peux pas me débarrasser de la référence. Continue de lancer une erreur. Je suppose que cela avait aussi à voir avec le délégué de la scène


3 Réponses :


0
votes

J'ai eu le même problème avec Xcode 11.1 avec un nouveau projet.

Supprimez le fichier SceneDelegate.swift et supprimez également ses méthodes déléguées de AppDelegate.swift . Cette solution a fonctionné pour moi.

Mon code open source créé avec Xcode 11 et Swift 5. https://github.com/gauravparvadiya/swift-news-reddit


0 commentaires

2
votes

Supprimez le fichier SceneDelegate.swift et ses méthodes déléguées.


0 commentaires

0
votes

Comme ils l'ont dit ci-dessus, supprimer SceneDelegate.swift, les méthodes sceneDelegate de AppDelegate.swift PLUS supprimez-les du fichier plist: UISceneConfigurations UIWindowSceneSessionRoleApplication

                key: UISceneConfigurationName
                value: Default Configuration
                key: UISceneDelegateClassName</key>
                value: $(PRODUCT_MODULE_NAME).SceneDelegate
                key: UISceneStoryboardFile
                value: Main

Si vous ne parvenez pas à les supprimer, vous obtiendrez une vue noire lorsque vous exécuterez votre application. Mais, les messages d'erreur de la console devraient vous aider à supprimer les éléments nécessaires du plist.


0 commentaires