J'ai un storyboard set up avec login et principale-vue-contrôleur, ce dernier est le point de vue du contrôleur à l'utilisateur de naviguer à quand la connexion est réussie. Mon objectif est de montrer à l'écran principal contrôleur immédiatement si l'authentification (stockées dans le trousseau d'accès) est couronnée de succès, et de montrer la connexion view controller si l'authentification a échoué. En gros, je veux faire dans mon AppDelegate:
// url request & response work fine, assume success is a BOOL here
// that indicates whether login was successful or not
if (success) {
// 'push' main view controller
} else {
// 'push' login view controller
}
Je sais à propos de la méthode performSegueWithIdentifier: mais cette méthode est une méthode d'instance de UIViewController, afin de ne pas être appelé à partir à l'intérieur de AppDelegate. Comment dois-je faire cela à l'aide de mon storyboard ??
EDIT:
Le Storyboard point de vue initial du contrôleur est maintenant une manette de navigation qui n'est pas relié à quoi que ce soit. J'ai utilisé le setRootViewController: distinction parce que MainIdentifier est un UITabBarController. Alors c'est ce que mes lignes de ressembler à:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
BOOL isLoggedIn = ...; // got from server response
NSString *segueId = isLoggedIn ? @"MainIdentifier" : @"LoginIdentifier";
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Storyboard" bundle:nil];
UIViewController *initViewController = [storyboard instantiateViewControllerWithIdentifier:segueId];
if (isLoggedIn) {
[self.window setRootViewController:initViewController];
} else {
[(UINavigationController *)self.window.rootViewController pushViewController:initViewController animated:NO];
}
return YES;
}
Suggestions/améliorations sont les bienvenues!