68 votes

Comment XCode charge-t-il le storyboard principal?

Lorsque je crée un nouveau single view application dans XCode 4.6 utiliser le storyboard, nous pouvons voir que la principale fonction crée une nouvelle application à l'aide de l'application délégué comme ceci:

return UIApplicationMain(argc, argv, nil, NSStringFromClass([MyAppDelegate class]));

Cependant, si nous regardons MyAppDelegate.h et MyAppDelegate.m, il n'est nulle part dans le code qui fait référence à MainStoryboard.storyboard. Cela diffère d'un non-storyboard version où l'on peut trouver la ligne de code qui charge la plume fichier par programmation.

Donc ma question est, comment le storyboard chargé? (où devrais-je poke à trouver?)

Merci

75voto

Chris Wagner Points 9668

Regardez vos paramètres de cible pour le projet

entrez la description de l'image ici

Notez le réglage du scénario principal.

Si vous vouliez le faire vous-même dans le code, vous feriez quelque chose comme.

 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{

   UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:[NSBundle mainBundle]];
   UIViewController *vc = [storyboard instantiateInitialViewController];

   // Set root view controller and make windows visible
   self.window.rootViewController = vc;
   [self.window makeKeyAndVisible];

   return YES;
}
 

9voto

Ramy Al Zuhouri Points 11065

Donner un coup d'oeil à la UIApplicationMain discussion:

Discussion
Cette fonction instancie l'objet de l'application de la catégorie principale et instancie le délégué (le cas échéant) de la classe donnée et fixe le délégué de l'application. Il définit aussi la boucle principale, y compris l'application d'exécution de la boucle, et commence le traitement des événements. Si l'application de l'Info.fichier plist spécifie l'un des principaux plume chargement d'un fichier, y compris par la NSMainNibFile clés et une carte de plume de nom de fichier pour la valeur, cette fonction des charges que la plume de fichier.

Lorsque UIApplicationMain est appelée, un fichier plist contenant tous les détails d'une application est chargée:

enter image description here

C'est la façon dont il "comprend" que le xib/storyboard fichier doit être chargés.

8voto

zimmryan Points 559

Il est lancé à partir du paramètre UIMainStoryboardFile de votre fichier info.plist. Xcode crée ensuite une fenêtre principale, instancie votre premier contrôleur de vue et l'ajoute à la fenêtre. Vous pouvez toujours le faire dans un code similaire au .nib en utilisant

 UIStoryboard* storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
UIViewController* initialView = [storyboard instantiateInitialViewController];
 

4voto

Beanwah Points 191

Si vous voulez instancier avec Swift

 var storyboard = UIStoryboard(name: "Main", bundle: NSBundle.mainBundle())
var vc : AnyObject! = storyboard.instantiateInitialViewController()
self.window!.rootViewController = vc as UIViewController
self.window!.makeKeyAndVisible()
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X