Ignorer l'ouverture de session Afficher si l'user d'parsing est connecté

J'essaie de créer une fonction où au lancement de l'application, l'application vérifie si un user Parse est actuellement connecté, et si cela est vrai, alors l'user devrait contourner l'écran de connection et pris à mon avis situé dans un onglet Contrôleur de vue. S'il n'y a pas d'user actuellement connecté, ouvrez la vue de connection, qui s'ouvre par défaut sur l'application. J'ai pris une fissure à cette fonctionnalité en créant une instruction if dans la fonction viewWillAppear sur ma vue de connection et si cela est vrai, instantiateViewControllerWithIdentifier() , mais mon application se bloque immédiatement en raison d'aucun identifiant avec mon nom.

 reason: 'Storyboard (<UIStoryboard: 0x7ffbf3e82190>) doesn't contain a view controller with identifier 'ProfileSettingsViewController' 

Maintenant, je pourrais manquer quelque chose, mais où dois-je définir l'identifiant pour un controller de vue? Ou est-ce que mon nom de class est l'identifiant que je prends actuellement?

Dans une question connexe, est-ce la meilleure façon de réaliser ce que je cherche à faire?

Voici ma logique de controller de connection:

 override func viewWillAppear(animated: Bool) { var currentUser = PFUser.currentUser() if currentUser != nil { self.storyboard?.instantiateViewControllerWithIdentifier("ProfileSettingsViewController") } } 

Voici la vue qui devrait s'ouvrir si l'user est déjà connecté dans ProfileSettingsViewController.swift :

 import UIKit class ProfileSettingsViewController: UIViewController { override func viewWillAppear(animated: Bool) { self.tabBarController?.navigationItem.setHidesBackButton(true, animated:true); //self.tabBarController?.navigationItem.title = "Profile Settings" self.navigationController?.navigationItem.title = "ffff" } override func viewDidLoad() { super.viewDidLoad() } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } @IBAction func logoutButton(sender: AnyObject) { PFUser.logOut() var currentUser = PFUser.currentUser() self.performSegueWithIdentifier("userLoggedOut", sender: self) self.navigationController?.setNavigationBarHidden(self.navigationController?.navigationBarHidden == false, animated: true) } /* // MARK: - Navigation // In a storyboard-based application, you will often want to do a little preparation before navigation override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { // Get the new view controller using segue.destinationViewController. // Pass the selected object to the new view controller. } */ } 

Je n'ai pas utilisé Parse auparavant, mais pour l'autorisation, je laisse généralement AppDelegate s'occuper du controller de vue initial.

 // member variables var storyboard : UIStoryboard?; func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { self.storyboard = UIStoryboard(name: "Main", bundle: NSBundle.mainBundle()); var currentUser = PFUser.currentUser() if currentUser != nil { self.window?.rootViewController = self.storyboard?.instantiateViewControllerWithIdentifier("ProfileSettingsViewController"); } return true; } 

Je suis assez sûr que cela fonctionnera depuis l'intérieur du controller de vue parce que dans votre code, vous n'avez pas assigné le controller instancié au controller de vue racine. Cependant, je pense que AppDelegate devrait prendre soin de changer le controller de vue racine, pas UIViewControllers.

EDIT: Désolé, j'ai oublié de mentionner votre erreur. Allez dans le storyboard et click le ProfileSettingsViewController et allez au 3ème onglet dans la barre latérale et il y a un ID Storyboard. Définissez le nom à "ProfileSettingsViewController" (ou ce que vous voulez) et il finda le controller. UIStoryboard.instantiateViewControllerWithIdentifier search dans le storyboard un controller avec l'ID Storyboard donné.

Vous définissez l'identificateur de Storyboard sur le View Controller, directement sous le paramètre de class personnalisé dans les storyboards.

entrez la description de l'image ici

Je voudrais charger l'écran d'accueil et vérifier si l'user est connecté sur viewDidAppear: dans un bloc de dispatch_once peut-être, si l'user == nil alors présenter le loginViewController utilisant une section ou manuellement.

Lorsque l'user s'est connecté, effectuez une search de return, envoyez un message à un délégué ou renvoyez une notification à l'écran d'accueil pour le fermer et l'actualiser.