afficher une vue depuis l'appDelegate

DarknightDarknight Membre
janvier 2016 modifié dans API UIKit #1

Bonjour amies croqueur de pommes,


 


Ce sujet va vous sembler redondant mais je ne trouve pas la solution.


 


En effet je voudrais au lancement de l'application, qu'il y est une redirection de vues, si c'est le premier lancement alors afficher le viewControllerZ sinon exécution normale.


 


Dans mon Storyboard, le point d'entrée est une UINavigationController qui donne sur ViewControllerA.


 


J'ai essayer plusieurs chose mais ne trouve pas la solution.


 


Dans appDelegate



func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {

if(!isAppAlreadyLaunchedOnce()){
let st = UIStoryboard(name: "Main", bundle: nil)
var vc = UIViewController()
vc = st.instantiateViewControllerWithIdentifier("ViewControllerZ") as! ViewControllerZ
let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
appDelegate.window?.rootViewController!.presentViewController(vc, animated: true, completion: nil)

}
}


Mais j'ai une erreur "Warning: Attempt to present <UINavigationController: 0x1656a2a0> on <ViewControllerZ: 0x16641a10> whose view is not in the window hierarchy!


 


J'ai essayer de créer une class NavigationViewController : UINavigationController et de l'implémenter comme ci dessous dans le viewDidLoad



if(!isAppAlreadyLaunchedOnce()){
let st = UIStoryboard(name: "Main", bundle: nil)
var vc = UIViewController()
vc = st.instantiateViewControllerWithIdentifier("ViewControllerZ") as! ViewControllerZ
self.addChildViewController(vc)
self.presentViewController(vc, animated: true, completion: nil)

}

mais là  encore ça ne marche pas.


 


Ou encore et toujours dans le NavigationViewController, tentative de création d'un autre UINavigationController avec mon ViewControllerZ en rootView.



if(isAppAlreadyLaunchedOnce()){
let st = UIStoryboard(name: "Main", bundle: nil)
let vc = st.instantiateViewControllerWithIdentifier("ViewControllerZ") as! ViewControllerZ
let navController = UINavigationController(rootViewController: vc)
self.presentViewController(navController, animated:true, completion: nil)

}


HELPPPP please.


 


Merci pour votre aide !!!


Réponses

  • Dans mon AppDelegate, je fais comme ca :


     


            // If the user is logged, instantiante ParentNavigationController. Otherwise, instantiante SignInVC

            let storyboard = UIStoryboard(name: "Main", bundle: nil)

            var vc = UIViewController()

            if currentUser.isLogged == false {

                vc = storyboard.instantiateViewControllerWithIdentifier("SignInVC")

            } else {

                vc = storyboard.instantiateViewControllerWithIdentifier("ParentNavigationController")

            }

            self.window?.rootViewController = vc

            self.window?.makeKeyAndVisible()


Connectez-vous ou Inscrivez-vous pour répondre.