Instanciation d'un contrôleur de vue par programmation avec Storyboard depuis AppDelegate
Je suis en train de construire une application qui, une fois lancé, pour la première fois, il demande à l'utilisateur de faire deux choses:
- Sélectionnez un Pays
- Accepter de T&Cs
À partir de là, il va à la maison-vue-contrôleur.
Le problème, je suis actuellement confronté est de pousser le premier-vue-contrôleur sur l'écran de mon délégué d'application. J'utilise les storyboards /Xcode 5/iOS7
Voici le code, je suis venu avec:
UINavigationController *navigationController = (UINavigationController *)self.window.rootViewController;
UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"Main_iPhone" bundle: nil];
BBCounterySettingsViewController *controller = (BBCounterySettingsViewController*)[mainStoryboard instantiateViewControllerWithIdentifier: @"CountrySettings"];
[navigationController pushViewController:controller animated:NO];
Le problème est l'application se bloque lorsqu'il atteint la dernière ligne de code avec l'erreur suivante:
* Résiliation d'application en raison de uncaught exception 'NSInvalidArgumentException', la raison: '-[UIViewController
pushViewController:animation:]: unrecognized sélecteur envoyé à l'instance
0x8e9a400'
N'importe qui ont des idées de ce que je fais de mal?
source d'informationauteur Tander
Vous devez vous connecter pour publier un commentaire.
Vous attendons à la
self.window.rootViewController
être unUINavigationController
mais c'est unUIViewController
. Cela signifie que la limite extérieure de-vue-contrôleur dans votre scénario est de type incorrect.Une meilleure façon d'obtenir la
UINavigationController
(Qui devrait fonctionner dans ce cas) est d'utiliser la propriétéself.navigationController
sur touteUIViewController
.De ce que je comprends, vous voulez présenter une vue la première fois que l'utilisateur exécute avoir à l'utilisateur de choisir certaines choses. Ce que vous devriez faire est de présenter un modal-vue-contrôleur, comme ceci:
Il y a deux choses que vous devez faire:
Ensuite, vous avez de l'utilisateur de la ligne ci-dessous
Espère que cette aide. Laissez-moi savoir si vous rencontrez toujours le problème.
Je pense que le contrôleur de l'identificateur de
"CountrySettings"
est réglé sur le mauvais contrôleur. Vous n'êtes pas obtenir uneNavigationController
où vous pouvez appelerpushViewController
...