1
votes

Contrôleur de navigation dans appdelegate

Je souhaite que mon contrôleur de navigation soit disponible dans toute mon application. Est-il possible de créer un objet contrôleur de navigation de l'interface utilisateur dans mon délégué d'application et de le rendre disponible dans l'ensemble de l'application? Puis-je utiliser la navigation dans toute l'application en utilisant cet objet?

J'ai créé un objet dans app-delegate dans Swift. mais cela ne fonctionne pas comme prévu. Dans le simulateur iPhone, seule la barre de navigation est affichée et je ne peux rien faire d'autre que regarder la barre. L'arrière-plan est complètement noirci.


1 commentaires

Où est le code que vous avez déjà essayé?


3 Réponses :


0
votes

Un NavigationViewController a besoin d'un rootViewController , je suppose que vous configurez votre code dans AppDelegate comme show:

window?.rootViewController = UINavigationController(rootViewController: FirstViewController())


1 commentaires

J'ai créé uiviewcontroller dans le storyboard tout ce que je veux que le contrôleur de navigation et la barre soient globaux afin que je puisse l'utiliser n'importe où



0
votes

Dans la fonction AppDelegate de didFinishLaunchingWithOptions , vous pouvez ajouter ces lignes de code

     let storyBoard = UIStoryboard(name: "Main", bundle: nil)
     let firstViewController = storyBoard.instantiateViewController(withIdentifier: "FirstViewController")
     let navController = UINavigationController()
     navController.navigationBar.isHidden = true
     window = UIWindow(frame: UIScreen.main.bounds)
     window?.rootViewController = navController(rootViewController: firstViewController)                             
     window?.makeKeyAndVisible()


1 commentaires

ce . FirstViewController () puis-je utiliser à partir du storyboard?



0
votes

Je ne suis pas sûr que les autres réponses soient adéquates, je vais donc ajouter mes 2 cents:

dans votre fichier AppDelegate, vous pouvez créer une référence à votre UINavigationController comme suggéré

if let delegate = UIApplication.shared.delegate as? AppDelegate {
    print(delegate.baseNavController)
}


6 commentaires

Je ne comprends pas la déclaration de garde ici. montrant également une erreur. La variable déclarée en condition 'garde' n'est pas utilisable dans son corps


supprimez l'instruction de garde affectez directement firstviewcontrolller en tant que rootviewcontroller affichant l'erreur NSInternalInconsistencyException ', raison:' Impossible de charger NIB dans le bundle:


Utilisez-vous des plumes ou des storyboards?


j'ai utilisé le storyboard. J'ai eu le problème résolu grâce à l'aide.Il y a un autre problème que je veux faire glisser mon menu latéral sur la barre de navigation actuellement il glisse en dessous


laissez déléguer = UIApplication.shared.delegate as? AppDelegate incapable d'accéder à l'élément de navigation, c'est-à-dire le titre et l'élément du bouton gauche à l'aide de la commande ci-dessus


@YashChoukse Avez-vous essayé d'accéder à la propriété rootViewController de baseNavController?