J'utilise Xcode 5 dans une application nouvellement créée et lorsque je viens de le créer, je clique sur le bouton Exécuter et clique dessus. Le projet est alors généré mais ne s'affiche pas dans le simulateur iOS et le message suivant s'affiche:
Failed to instantiate the default view controller for UIMainStoryboardFile 'Main' -
perhaps the designated entry point is not set?
Bien sûr, j'ai googlé à ce sujet et tout le monde souligne que cela se produit car XCode ne sait pas encore quel contrôleur de vue est le contrôleur initial. Mais ce qui est étrange, c’est que j’ai créé l’application en tant qu’application basée sur la page (également essayé d’applications à affichage unique et à onglets) et XCode avait déjà défini un Storyboard.
De plus, lorsque je choisis l'option d'interface principale du projet, le storyboard (nommé "Main" par Xcode lui-même) est défini et, dans le Storyboard, mon contrôleur de vue est défini en tant que "Contrôleur de vue initiale".
Qu'est-ce qui ne va pas?
Donc, cela m'est aussi arrivé. J'ai vérifié 50 fois et mon "contrôleur de vue initial est" a été vérifié, croyez-moi. C'est arrivé à l'improviste. Alors, comment ai-je résolu le problème?
Vérifiez Is Initial View Controller dans l'inspecteur d'attributs.
Cliquez d'abord sur le contrôleur de vue dans le côté droit tilitaires barre. Ensuite, sélectionnez Inspecteur d'attributs et assurez-vous que la case Le contrôleur de vue initial est-il est cochée!
Utilisation d'Interface Builder:
Vérifiez si ' est le contrôleur de vue initial ' est défini. Vous pouvez le définir en utilisant les étapes ci-dessous:
Si vous avez effectué cette étape et que vous obtenez toujours une erreur, alors uncheck and do it again.
Utilisation par programmation:
Objective-C:
self.window = [[UIWindow alloc] initWithFrame:UIScreen.mainScreen.bounds];
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
UIViewController *viewController = [storyboard instantiateViewControllerWithIdentifier:@"HomeViewController"]; // <storyboard id>
self.window.rootViewController = viewController;
[self.window makeKeyAndVisible];
return YES;
rapide:
self.window = UIWindow(frame: UIScreen.mainScreen().bounds)
let mainStoryboard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
var objMainViewController: MainViewController = mainStoryboard.instantiateViewControllerWithIdentifier("MainController") as! MainViewController
self.window?.rootViewController = objMainViewController
self.window?.makeKeyAndVisible()
return true
Cet avertissement est également signalé si vous avez du code tel que:
window = UIWindow(frame: UIScreen.mainScreen().bounds)
window?.rootViewController = myAwesomeRootViewController
window?.makeKeyAndVisible()
Dans ce cas, accédez à la première page des paramètres de cible et définissez Main Interface
sur vide, car vous n'avez pas besoin d'une entrée de storyboard pour votre application.
Configurer la fenêtre manuellement,
- (void)applicationDidBecomeActive:(UIApplication *)application
{
if (!application.keyWindow.rootViewController)
{
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
UIViewController *myViewController= [storyboard instantiateViewControllerWithIdentifier:@"myViewController identifier"];
application.keyWindow.rootViewController = myViewController;
}
}
Je reçois cette erreur lorsque je change le nom du fichier de storyboard "Main.storyboard" TO: "XXX.storyboard"
La solution pour moi était:
Bonne chance
Le produit "propre" était la solution pour moi.
Si vous avez ajouté un nouveau storyboard, vous devez vérifier les points suivants.
1) Dans votre fichier de liste de contrôle, la valeur de est le nom principal de la base de fichier du storyboard (iPad) ou (iPhone). ) doit correspondre au nom de fichier de votre storyboard (, n’ajoutez pas d’extension . storyboard )
2) Dans le storyboard, il devrait y avoir un seul contrôleur de vue qui soit défini comme . C'est le contrôleur de vue initial
3) Nettoyez et construisez votre projet. :)
Si vous avez régulièrement engagé votre code dans le contrôle de source, vous éviterez ainsi la création d'un nouveau Storyboard et, éventuellement, de nouveaux problèmes ...
J'ai pu résoudre ce problème en comparant le code source Git de la version qui fonctionnait contre celui qui avait été cassé. Le diff a montré que la première ligne devrait contenir l'ID du contrôleur de vue initial, dans mon cas, initialViewController = "Q7U-eo-vxw" . J'ai cherché dans le code source pour être sûr que l'identifiant existait. Tout ce que je devais faire était de le remettre et tout fonctionnait à nouveau!
<document type="com.Apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="5056" systemVersion="13E28" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" initialViewController="Q7U-eo-vxw">
<dependencies>
<deployment defaultVersion="1296" identifier="iOS"/>
<plugIn identifier="com.Apple.InterfaceBuilder.IBCocoaTouchPlugin" version="3733"/>
</dependencies>
<scenes>
Voici quelques étapes qui peuvent vous aider à résoudre:
Vérifiez si vous avez la fenêtre var dans le AppDelegate.
var window: UIWindow?
Et aussi vérifier le storyboard de votre fichier Info.plist.
<key>UIMainStoryboardFile</key>
<string>Main</string>
La configuration par programme de rootViewController dans AppDelegate ne résoudra pas l'avertissement. Vous devez choisir si vous souhaitez laisser le storyboard définir le contrôleur de vue ou le faire par programme.