afficher une vue depuis l'appDelegate
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()