Es konnte kein Storyboard mit dem Namen "Main" im Bundle gefunden werden

86

Ich erhalte eine seltsame Fehlermeldung: 'Could not find a storyboard named 'Main' in bundle NSBundle'Beim Versuch, meine App auf einem echten iOS-Gerät auszuführen.

Ich habe die Datei in meinem Verzeichnis und sie funktioniert im Simulator einwandfrei. In diesem Copy Bundle ResourcesAbschnitt ist die Datei Main.storyboardjedoch rot.

Ich habe versucht, es zu entfernen und erneut hinzuzufügen, Xcode neu zu starten, Build zu bereinigen usw. ohne Erfolg. Dies ist die Warnung, die ich in Xcode erhalte:

/Users/ajay/Documents/avx/avx/Base.lproj/Main.storyboard: Internationalization of /Users/ajay/Documents/avx/avx/Base.lproj/Main.storyboard is not available when compiling for targets before iOS 6.0
Carpetfizz
quelle
Ich habe in diesem Beitrag beschrieben, wie das Problem gelöst werden kann: stackoverflow.com/a/21098195/1141395
Alex Cio
Dieses Problem tritt hauptsächlich aufgrund einer beschädigten App-Installation auf. Die Lösung besteht darin, das Projekt zu bereinigen und zu erstellen. Entfernen Sie auch die vorhandene App vom Gerät / Simulator und führen Sie sie erneut aus.
Krishnabhadra
Scrollen Sie für Xcode 11- Benutzer nach unten zu stackoverflow.com/a/58452686 , möglicherweise ist dies genau Ihr Fall.
Cemen

Antworten:

92

Öffnen Sie die info.plist Ihres Projekts und entfernen Sie die ausgewählte Zeile, die im Screenshot angezeigt wirdGeben Sie hier die Bildbeschreibung ein

Wenn Sie einen schwarzen Bildschirm erhalten, stellen Sie sicher, dass Ihr neues anfängliches Storyboard als Hauptoberfläche ausgewählt ist Geben Sie hier die Bildbeschreibung ein

Kalpit Gajera
quelle
24
Danke, aber dadurch wurde meine App nur mit einem schwarzen Bildschirm gestartet. Keine Abstürze.
Carpetfizz
Stellen Sie sicher, dass diese beiden Zeilen in Ihrer - (BOOL) -Anwendung enthalten sind: (UIApplication *) -Anwendung didFinishLaunchingWithOptions: (NSDictionary *) launchOptions ...: (1) self.window = [[UIWindow alloc] initWithFrame: [[UIScreen mainScreen] Grenzen]]; (2) self.window.backgroundColor = [UIColor whiteColor];
Joel Hansen
@ Carpetfizz Add '[self.window makeKeyAndVisible];' zu Ihrem AppDelegate.
Alserda
4
"App-Start mit schwarzem Bildschirm", hat niemand eine Idee dafür?
Umit Kaya
@Umitk setzen Sie den Hintergrund auf Weiß (view.backgroundColor = .white) oder eine andere Farbe, die Sie mögen
Stephane Paquet
59

Sie können die Zielmitgliedschaft des Storyboards überprüfen. Möglicherweise liegt dort das Problem:

Es sollte so aussehen:

Zielmitgliedschaft

Geekoder
quelle
Ich hatte das gleiche Problem und dachte zuerst, ich würde nicht die richtigen Ressourcen auf das Ziel kopieren, aber das Problem wurde behoben, indem die Zielmitgliedschaft behoben wurde.
Pyj
2
Danke, hat funktioniert! Ich habe Clean, Rename File, Update Plist ohne Freude gemacht. Es ist immer das offensichtlichste, was Sie bekommt.
Jim Geldermann
Hallo, ich habe das gleiche Problem, aber das
Zielmitgliedschaftsfenster
Aus irgendeinem Grund wurde mein Ziel nicht ausgewählt. Danke für diese Antwort. Gelöst !!
Ümañg ßürmån
58

Wenn Sie dieses Problem unter Xcode 11 haben, können Sie es wie folgt beheben, wenn Sie dieses Problem haben, wenn Sie ein Storyboard ohne Projekt einrichten

(Hinzufügen einiger Teile, die Ricardopereira übersehen hat)

1) Löschen Sie zuerst die Datei Main.storyboard

2) Gehen Sie als nächstes zu PROJECT_NAME -> GENERAL

Löschen Sie im Dropdown-Menü Hauptschnittstelle den Text Main

Entfernen des Verweises auf main aus den allgemeinen Einstellungen

3) Gehen Sie nun zu info.plist und löschen Sie den Storyboard-Namen

Entfernen des Verweises auf das Storyboard aus info.plist

4) Ändern Sie abschließend den Szenencode (_: willConnectTo: options) in der Datei SceneDelegate.swift (Ja! Er ist nicht mehr in App Delegate enthalten.)

var window: UIWindow?


    func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
        // Use this method to optionally configure and attach the UIWindow `window` to the provided UIWindowScene `scene`.
        // If using a storyboard, the `window` property will automatically be initialized and attached to the scene.
        // This delegate does not imply the connecting scene or session are new (see `application:configurationForConnectingSceneSession` instead).
        guard let windowScene = (scene as? UIWindowScene) else { return }
        window = UIWindow(frame: windowScene.coordinateSpace.bounds)
        window?.windowScene = windowScene
        window?.rootViewController = ViewController()
        window?.makeKeyAndVisible()
    }

Sie können stattdessen auch auf dieses Video verweisen: https://www.youtube.com/watch?v=Htn4h51BQsk

Parth Tamane
quelle
3
Ihre Antwort ist fast richtig, nur gibt es eine kleine Änderung in der guard let _ = (scene as? UIWindowScene) else { return } let viewController = ViewController() if let windowScene = scene as? UIWindowScene { self.window = UIWindow(windowScene: windowScene) self.window?.rootViewController = viewController self.window?.makeKeyAndVisible() }
Reza Dehnavi
3
Um die Betonung zu erhöhen, ist der Eintrag info.plist nicht nur der übliche Haupt-Storyboard-Eintrag, sondern AUCH derjenige im Anwendungsszenen-Manifest, das für iOS 13 neu ist. Ich musste ihn zweimal durchlesen, bevor ich es merkte.
jboulter11
Dies ist jetzt die richtige Vorgehensweise! ^^ Apple hat immer wieder Dinge geändert.
Yuchen Zhong
36

Ein Update für Anwendungen, die für iOS 13.0 und höher erstellt wurden. (Xcode 11)

Wenn die Fehlermeldung "Ein Storyboard mit dem Namen" Main "im Bundle konnte nicht gefunden werden, obwohl der" Basis-Storyboard-Dateibasisname "in der info.plist und" Main Interface "unter" Deployment in Target "geändert wurde.

Dann müssen Sie einen weiteren Eintrag in der Datei info.plist ändern.

  1. Öffnen Sie die Datei info.plist.
  2. Erweitern Sie "Manifest der Anwendungsszene".
  3. Erweitern Sie "Szenenkonfiguration".
  4. Erweitern Sie das Element 0 unter "Rolle für Anwendungssitzungen" und ändern Sie dort den Namen des Storyboards.

Geben Sie hier die Bildbeschreibung ein

Und Ihre Anwendung wird funktionieren.

Shubham
quelle
1
Dies ist absolut die richtige Antwort. Es reicht anscheinend nicht mehr aus, das Haupt-Storyboard über die Dropdown-Liste Allgemein> Hauptschnittstelle festzulegen.
NRitH
1
Danke dafür. Das Löschen des Schlüssels "Anwendungsszenenmanifest" (zusammen mit allen Unterschlüsseln) hat das Problem für mich behoben.
Greg Brown
1
Ich weiß literarisch nicht, was passiert ist, aber das funktioniert
Bawantha
1
Du hast mein Leben gerettet :)
Yusuf Kamil AK
17

In einem Projekt, das UIScenein iOS 13 und Xcode 11 verwendet wird, müssen Sie den UISceneStoryboardFileSchlüssel aus dem entfernen .plist.

Xcode 11:

xcode11-uiscene

Direkt aus der Datei ändern:

Uiscene-Plist

Ricardopereira
quelle
15

Ich habe die App von meinem Telefon gelöscht, Produkt -> Bereinigen ausgeführt und sie erneut geladen. Das war alles was ich brauchte.

user1021430
quelle
Wenn jede Ausführung gelöscht wird, wird sie nur von mir ausgeführt. Bitte helfen Sie mir in xcode 10.1
Aruna M,
12

Ich habe diesen Fehler erhalten, aber ich wollte Storyboards vollständig entfernen.

Durch Entfernen des Schlüssels 'Name der Basis-Storyboard-Dateibasis' von meiner Liste wurde der Fehler behoben.

Kraftydevil
quelle
10

Es konnte kein Storyboard mit dem Namen "Main" im Bundle gefunden werden

Grund, an den ich denken könnte:

Nach meinem iOS-Wissen geschah dies nur, weil der XCode den Verweis auf die Datei Main.storyboard in meinem Projektverzeichnis nicht finden konnte, um ihn in die App zu kopieren.

Auflösung:

  1. Wählen Sie die Datei Main.storyboard aus und versuchen Sie sie zu löschen. Dies wird im folgenden Dialogfeld angezeigt: Geben Sie hier die Bildbeschreibung ein

  2. Klicken Sie auf die Schaltfläche "Referenz entfernen".

  3. Dann von der tatsächlichen Stelle, an der ich die Main.storyboard-Datei im Projektverzeichnis finden konnte, per Drag & Drop in den XCode und erneut aus dem Dialogfeld, das wie folgt angezeigt wird: Geben Sie hier die Bildbeschreibung ein

  4. Ich habe "Ordnerreferenzen erstellen" gewählt (weil ich dies beabsichtigt habe, weil ich die Datei- und Ordnerstruktur meines Projekts geändert habe). In den meisten Fällen funktioniert die Auswahl von "Gruppen erstellen" jedoch auch. Und klickte auf "Fertig stellen". Meine Storyboard-Dateien befanden sich bereits in einem Base.lprojVerzeichnis wie im Screenshot gezeigt wie folgt:

    Geben Sie hier die Bildbeschreibung ein

    Hinweis: Eine wichtige Sache, an die Sie bei diesem Schritt erinnern sollten, ist, dass Sie das Kontrollkästchen "Zu Zielen hinzufügen" in Ihrer App aktivieren.

  5. Reinigen Sie das Produkt, erstellen Sie es neu, und wenn es erfolgreich ist, versuchen Sie es meistens erfolgreich.

Hoffe, das könnte jemand anderem da draußen helfen! Ich habe dies auf XCode 7.3.1 und auf iOS Sim 9.3 und iPhone 6S versucht!

Randika Vishman
quelle
Bitte helfen Sie diesem Problem, das auch nach der Installation von os10.14.1 und xc0de 10.1 auftritt. Ich versuche, es nach 3 Tagen zu beheben, aber immer noch. Mein Projekt funktioniert gut in xcode9.1.
Aruna M
@ArunaM Hast du die obigen Schritte ausprobiert, die ich in der Antwort angegeben habe? Wie war der Status danach?
Randika Vishman
1
Dies war die Lösung, als ich einen ViewController aus dem Projekt entfernte, der denselben Fehler verursachte!
Slarty Bartfast
8

Folge den Schritten:

1) Klicken Sie zuerst auf Ihr Storyboard

2) Klicken Sie dann auf Dateiinspektor

3) Wählen Sie dann "Zielmitgliedschaft"

Bildschirmfoto

Vicky
quelle
6

Der Simulator unterscheidet nicht zwischen Groß- und Kleinschreibung, das Gerät jedoch. Wenn Ihr Storyboard MainStoryboard und nicht MainStoryBoard heißt, verursacht dies Ihr Problem. und auch * nicht die Erweiterungen verwenden schreiben nur den Storyboard-Namen

main.storyboard -> nur main ist der Name des Storyboards


quelle
6

Swift 5.1 & xCode 11.2

In meinem Fall habe ich vergessen zu ändern Storyboard NameinInfo.plist

Geben Sie hier die Bildbeschreibung ein

Info.plist Quellcode

    <dict>
        <key>UIApplicationSupportsMultipleScenes</key>
        <false/>
        <key>UISceneConfigurations</key>
        <dict>
            <key>UIWindowSceneSessionRoleApplication</key>
            <array>
                <dict>
                    <key>UISceneConfigurationName</key>
                    <string>Default Configuration</string>
                    <key>UISceneDelegateClassName</key>
                    <string>$(PRODUCT_MODULE_NAME).SceneDelegate</string>
                    <key>UISceneStoryboardFile</key>
                    <string>AccountViewController</string>
                </dict>
            </array>
        </dict>
    </dict>
nomnom
quelle
4
  1. Öffnen Sie Ihre Storyboard-Datei
  2. Klicken Sie dann auf Dateiinspektor
  3. Wählen Sie dann "Zielmitgliedschaft" und überprüfen Sie Ihr Projekt
  4. Machen Sie dasselbe für die ViewController-Datei !!! wichtiger Teil, wenn Sie ViewController.swift oder ViewController.m mit Ihrem Storyboard verwenden !!!
user1195202
quelle
3

Dieser Fehler tritt auf, wenn Sie Ihre main.storyboard-Datei nach dem Löschen Ihrer Datei aus dem Papierkorb wiederherstellen. Ich hatte gestern auch das gleiche Problem.

Sie müssen den Speicherortpfad des main.storyboards im Dateiinspektor des main.storyboards als Relativ zur Gruppe festlegen. Danach müssen Sie im selben Attribut das Häkchen auf Ihrem App-Ziel setzen (wie Sie im beigefügten Bild sehen können).

Geben Sie hier die Bildbeschreibung ein

Saumya Ranjan Gangwar
quelle
2

Zwei verschiedene Lösungen, die nach dem Upgrade auf Xcode 10.1 für mich funktionierten:

  • In den Einstellungen Datei-> Arbeitsbereich (oder Projekt) . Wechseln Sie zu Legacy Build System .

  • Entfernen Sie in den Build-Phasen Ihrer Ziele den Ordner " Base.lproj " aus den Ressourcen "Bundle-Ressourcen kopieren" (falls aufgeführt) und stellen Sie sicher, dass jedes Ihrer Storyboards separat aufgelistet und kopiert wird.

Stellen Sie nach dem Anwenden eines der oben genannten Fixes sicher, dass Sie den Build-Ordner einmal im Produktmenü bereinigen, da die Fixes sonst möglicherweise nicht ordnungsgemäß funktionieren.

LentoMan
quelle
1

Das Löschen einer Zeile in der Liste verursachte auch in meiner App einen schwarzen Bildschirm. Und ich regelte es durch Aktivierung Ziel Mitgliedschaft des Storyboards

Küste liu
quelle
1

Wie Kalpit Gajera gesagt hat, "öffnen Sie die info.plist Ihres Projekts und entfernen Sie die ausgewählte Zeile, die im Screenshot angezeigt wird". Sie entfernen einfach den Basisnamen der Haupt-Storyboard-Datei aus der Info.plist. Nachdem Sie es entfernt, bereinigt und ausgeführt haben, schlägt das Programm nicht mehr fehl, sondern zeigt einen schwarzen Bildschirm an. Öffnen Sie die Info.plist erneut und fügen Sie die Zeile manuell wieder hinzu. Problem behoben.

Mavin Martin
quelle
0

Wählen Sie main.storyboard, ändern Sie die Ansicht als iOS 6.1 und früher, und xcode teilt Ihnen mit, was Sie tun müssen.

Geben Sie hier die Bildbeschreibung ein

Chris
quelle
0

Meine Lösung ist:

Wenn ich eine Seque-Verbindung zwischen zwei Ansichten hinzugefügt habe und in der Projektkonfiguration das Bereitstellungsziel kleiner als 8,0 ist, wird dieser Fehler angezeigt.

ok, leicht zu verstehen, wenn Sie für IOS 6.0 entwickeln (zum Beispiel), können Sie Seque nicht verwenden, da die Seque IOS 8.0 oder höher benötigt ...... ;-)

Also habe ich das Bereitstellungsziel auf 8.0 gesetzt und der Fehler ist weg !!!! andernfalls kündige ich alle Segue-Verbindungen und kümmere mich um IBAction, old school ;-)

Sven Vietense
quelle
0

Ich habe die Main.Storyboard-Datei in den "blauen" Unterordner verschoben, was zu Problemen führte. Ich musste Unterordner gemäß diesen Anweisungen hinzufügen. Xcode 6.3 New File Issue

Das Verschieben der Main.Storyboard-Datei in den gelben Unterordner hat bei mir funktioniert

Aqib Mumtaz
quelle
0

Mein Problem wurde behoben, indem das .xmlSuffix aus dem entfernt wurde Main.storyboard.xml file.

Anscheinend hat sich das Suffix von der Version geändert, aus der ich das Projekt importiert habe.

Daher wurde das Problem behoben , indem die Datei umbenannt (das .xmlSuffix entfernt) und neu gestartet wurde Project-> clean.....

Craig D.
quelle
0

Wenn Sie immer noch einen schwarzen Bildschirm haben, fügen Sie Ihrem Szenendelegierten den folgenden Code hinzu

willConnectTo

    guard let windowScene = (scene as? UIWindowScene) else { return }
    window = UIWindow(frame: windowScene.coordinateSpace.bounds)
    window?.windowScene = windowScene
    let navController = UINavigationController()
    let mainstoryboard:UIStoryboard = UIStoryboard(name: "Your storyboard name", bundle: nil)
    let initialController = mainstoryboard.instantiateViewController(withIdentifier: "your initial controller Identifier") as! initialController
    navController.addChild(initialController)
    window?.rootViewController = navController
    window?.makeKeyAndVisible()
Sagar Thukral
quelle
0

Wenn Ihr Storyboard im Projekt hinzugefügt wird (was Sie im Abschnitt "Projektdatei-Inspektor" des Xcode-Dienstprogrammbereichs bestimmen)Das Kontrollkästchen ist im Zielmitgliedschaftsbereich markiert

Sie müssen nur Main.Storyboardaus "Bundle-Ressource kopieren" (in Build Phase) entfernen und unter "Bundle-Ressource kopieren" erneut hinzufügen. Das wurde für mich gearbeitet.Geben Sie hier die Bildbeschreibung ein

Sk Borhan Uddin
quelle
-1

Ok, das war ein Prozess. Ich versuche so viele verschiedene Dinge. Ausführen von xcode 6.4 unter OS 10.11. Das Problem kann nicht gefunden werden. Was ich schließlich getan habe, war, das main.storyboard auch auf meinem Desktop von Finder zu entfernen. Habe einen sauberen und erstellten und xcode beendet und beendet. xcode neu gestartet jetzt hat es ein rotes main.storyboard. Ich lasse es praktisch das gleiche tun. Dann klicke ich mit der rechten Maustaste auf den Projektordner und wähle die Option Dateien hinzufügen zu ... Navigiere zu dem Ort, an dem er sich befindet, und öffne ihn. dann, wenn es dort rechts ist, sollte der Identitätsinspektor sein. Klicken Sie auf den kleinen Ordner unter Speicherort. Navigieren Sie erneut zu diesem Ordner und wählen Sie Auswählen. Dann rannte ich und es funktionierte. Amen !!!

iSpeedyG
quelle
-1

Wählen Sie den Ansichts-Controller aus, der zuerst in der Liste auf der linken Seite des Storyboards angezeigt werden soll. Stellen Sie dann im Attributinspektor sicher, dass der Titel "Main" lautet und das Kontrollkästchen für "Is Initial View Controller" aktiviert ist.

Akashascosset
quelle