it-swarm.com.de

iOS 7 - Instanziierung des Standard-Ansichtscontrollers fehlgeschlagen

Ich verwende Xcode 5 in einer neu erstellten App. Wenn ich sie erstelle, drücke ich auf die Schaltfläche "Ausführen" und klicke darauf. Das Projekt wird erstellt, aber im iOS-Simulator nicht angezeigt, und es wird die folgende Meldung angezeigt:

 Failed to instantiate the default view controller for UIMainStoryboardFile 'Main' - 
 perhaps the designated entry point is not set?

Ich habe natürlich darüber gegoogelt und jeder weist darauf hin, dass dies geschieht, weil XCode noch nicht weiß, welcher Ansichtscontroller der erste ist. Aber das Seltsame ist, dass ich die App als seitenbasierte (auch ausprobierte Optionen für Einzelansichten und Registerkarten) App erstellt habe und XCode bereits ein Storyboard dafür definiert hatte.

Wenn ich zur Hauptschnittstellenoption des Projekts gehe, wird das Storyboard (von Xcode selbst als "Main" bezeichnet) festgelegt, und im Storyboard wird mein View Controller als "Initial View Controller" festgelegt.

enter image description here

Was ist falsch?

88
rodrigoalves

Das ist mir also auch passiert. Ich habe 50 Mal nachgesehen und mein "Is Initial View Controller" wurde überprüft, glauben Sie mir. Es passierte aus heiterem Himmel. Wie habe ich das behoben?

  1. Erstellen Sie ein neues Storyboard in Ihrem Projekt und nennen Sie es Main_iPhoneV2 (oder iPadV2, abhängig von Ihrem ursprünglichen Storyboard-Stil).
  2. Öffne das kaputte Storyboard, klicke irgendwo in den weißen Bereich und drücke Befehl-a, dann Befehl-c (Alles auswählen und kopieren)
  3. Öffnen Sie Ihr neues Storyboard und drücken Sie Befehlstaste-V, um dasselbe Setup einzufügen
  4. Gehen Sie zu Ihren Projekteinstellungen und ändern Sie Ihr "Hauptinterface" auf das neue Main_iPhoneV2 (Wenn es sich um Ihr iPad handelt und Sie eine universelle App schreiben, müssen Sie die -Info.plist bearbeiten und nach dem Wert "Main storyboard file" suchen Basisname (iPad)
  5. Kompilieren Sie neu und hören Sie auf, Ihre Haare herauszuziehen
53
Ryna

Aktivieren Sie das Kontrollkästchen Ist Initial View Controller im Attributinspektor.

enter image description here

299
Ashvin Ajadiya

Klicken Sie zuerst auf den View Controller in der rechten Leiste Dienstprogramme. Aktivieren Sie als Nächstes das Kontrollkästchen Attributes Inspector und vergewissern Sie sich, dass im Abschnitt View Controller das Kontrollkästchen 'Is Initial View Controller' aktiviert ist!

39
Andy

Verwenden von Interface Builder:

Prüfen Sie, ob ' Is initial view controller ' gesetzt ist. Sie können es mit den folgenden Schritten einstellen:

  1. Wählen Sie Ihren View Controller (der als Einstiegsbild erscheinen soll).
  2. Wählen Sie Attributinspektor im Fenster Dienstprogramme aus.
  3. Wählen Sie im Abschnitt View Controller die Option ' Is Initial View Controller ' (falls nicht).

Wenn Sie diesen Schritt ausgeführt haben und immer noch eine Fehlermeldung erhalten, dann uncheck and do it again.

Steps to solve problem

Programmgesteuert verwenden:

Ziel-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;

Swift:

        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
14

Diese Warnung wird auch gemeldet, wenn Sie über folgenden Code verfügen:

    window = UIWindow(frame: UIScreen.mainScreen().bounds)
    window?.rootViewController = myAwesomeRootViewController
    window?.makeKeyAndVisible()

In diesem Fall gehen Sie zur ersten Seite der Zieleinstellungen und setzen Sie Main Interface zu leeren, da Sie für Ihre App keinen Storyboard-Eintrag benötigen.

13
superarts.org

Richten Sie das Fenster manuell ein,

- (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;
     }
}
10
Shamsudheen TK

Ich habe dies mit meinem Tab Bar Controller erlebt, der nicht zusammen mit einem schwarzen Bildschirm im Simulator angezeigt wird. Ich habe Folgendes ausgeführt, damit meine App im Simulator angezeigt wird.

  1. Gehen Sie zur Hauptübersicht.
  2. Überprüf den Is Initial View Controller auf der Registerkarte "Attribute".

Is Initial View Controller in the Attributes Inspector.

9
Cons Bulaquena

Ich erhalte diese Fehlermeldung, wenn ich den Namen der Storyboard-Datei ändere: "Main.storyboard" TO: "XXX.storyboard"

Die Lösung für mich war:

  • Produkt-> Reinigen
  • ÄNDERUNG: nterstützende Dateien -> info.plist -> Hauptname der Storyboard-Datei -> Hauptname TO: XXX

Viel Glück

5
Hovanes Mosoyan

enter image description here

Stellen Sie neben der obigen korrekten Antwort auch sicher, dass Sie im Allgemeinen die richtige Hauptschnittstelle eingestellt haben.

3
Naren

Produkt "Clean" war die Lösung für mich.

3
Walter Schurter

Wenn Sie ein neues Storyboard hinzugefügt haben, müssen Sie die folgenden Punkte überprüfen.

1) Überprüfen Sie in Ihrer Plist-Datei den Wert Name der Hauptstoryboard-Dateibasis (iPad) oder (iPhone) abgestimmt auf den Namen Ihrer Storyboard-Datei ( keine Erweiterung hinzufügen . storyboard )

2) Im Storyboard sollte es einen View Controller geben, der eingestellt ist als Ist der erste View Controller

3) Bereinigen und erstellen Sie Ihr Projekt. :)

enter image description here

2
Sachin Nikumbh

Wenn Sie Ihren Code regelmäßig zur Quellcodeverwaltung verpflichtet haben, ersparen Sie sich möglicherweise den Aufwand, ein neues Storyboard zu erstellen und möglicherweise weitere Probleme zu verursachen ...

Ich konnte dieses Problem lösen, indem ich den Git-Quellcode der Version verglich, die gegen den fehlerhaften funktionierte. Der Unterschied zeigte, dass die erste Zeile die ID des anfänglichen Ansichtscontrollers enthalten sollte, in meinem Fall initialViewController = "Q7U-eo-vxw". Ich habe den Quellcode durchsucht, um sicherzustellen, dass die ID existiert. Alles was ich tun musste war es zurückzusetzen und alles funktionierte wieder!

<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>

Hier sind einige Schritte, die Ihnen bei der Problembehandlung helfen können:

  1. Klicken Sie mit der rechten Maustaste auf das fehlerhafte Storyboard und verwenden Sie Quellcodeverwaltung> Übernehmen ..., um Ihre Änderungen seit dem letzten Übernehmen beizubehalten.
  2. Klicken Sie mit der rechten Maustaste auf Ihr fehlerhaftes Storyboard und verwenden Sie "Öffnen als> Quellcode", um die XML-Datei des Storyboards anzuzeigen.
  3. Suchen Sie im Element document nach dem Attribut "initialViewController". Wenn es fehlt, machen Sie sich keine Sorgen, wir werden das beheben. Wenn dies der Fall ist, doppelklicken Sie auf die ihm zugewiesene ID, drücken Sie Befehl-c, um sie zu kopieren, Befehl-f Befehl-v, um tiefer im Dokument danach zu suchen. Dies ist die Kennung des Controllers, der die erste Ansicht bereitstellen soll. Wenn es im Dokument nicht definiert ist, ist das ein Problem - Sie sollten es aus dem Dokument-Tag entfernen, in meinem Fall initialViewController = "Q7U-eo-vxw" =.
  4. Gehen Sie zum Xcode-Menüelement "Ansicht" und wählen Sie "Versionseditor"> "Vergleichsansicht anzeigen"
  5. Hier sehen Sie links Ihre lokale Version und rechts die historische Version. Klicken Sie auf das Datum unter der historischen Version, um eine Liste der Commits für dieses Storyboard anzuzeigen. Wählen Sie eines aus, von dem Sie wissen, dass es funktioniert hat, und vergleichen Sie das document -Element. Wie lautet die ID des * initialViewController? Ist es anders Versuchen Sie in diesem Fall, es erneut manuell zu bearbeiten und auszuführen. xcode historical compare tool in action
1
neoscribe

Überprüfen Sie, ob Sie die Fenstervariable in der AppDelegate haben.

var window: UIWindow? 

Überprüfen Sie auch das Storyboard Ihrer Info.plist-Datei.

<key>UIMainStoryboardFile</key>
<string>Main</string>

Durch programmgesteuertes Einstellen des rootViewController in AppDelegate wird die Warnung nicht behoben. Sie sollten auswählen, ob der Ansichts-Controller im Storyboard festgelegt oder programmgesteuert werden soll.

0
rockdaswift