Impossibile trovare uno storyboard denominato "Principale" nel pacchetto


86

Ricevo uno strano errore: 'Could not find a storyboard named 'Main' in bundle NSBundle' quando a eseguire la mia app su un vero dispositivo iOS.

Ho il file nella mia directory e funziona bene nel simulatore. Tuttavia, nella Copy Bundle Resourcessezione, il fileMain.storyboard è rosso.

Ho provato a rimuoverlo e ad aggiungerlo di nuovo, a riavviare Xcode, a pulire build, ecc. Senza alcun risultato. Questo è l'avviso che ricevo in Xcode:

/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

Ho descritto come risolvere il problema all'interno di questo post: stackoverflow.com/a/21098195/1141395
Alex Cio

Questo problema si verifica principalmente a causa dell'installazione dell'app danneggiata. La soluzione è pulire e costruire il progetto. Rimuovi anche l'app esistente dal dispositivo / simulatore ed esegui di nuovo.
Krishnabhadra,

Utenti di Xcode 11 , scorri verso il basso fino a stackoverflow.com/a/58452686 , forse è esattamente il tuo caso.
Cemen

Risposte:


93

apri la info.plist del tuo progetto e rimuovi la riga selezionata visualizzata nello screenshotinserisci qui la descrizione dell'immagine

Se viene visualizzata una schermata nera, assicurati che il nuovo storyboard iniziale sia selezionato come interfaccia principale inserisci qui la descrizione dell'immagine


24
Grazie, ma questo ha appena avviato la mia app con una schermata nera. Nessun crash però.
Carpetfizz

Assicurati di avere queste due righe nella tua applicazione - (BOOL): (UIApplication *) application didFinishLaunchingWithOptions: (NSDictionary *) launchOptions ...: (1) self.window = [[UIWindow alloc] initWithFrame: [[UIScreen mainScreen] limiti]]; (2) self.window.backgroundColor = [UIColor whiteColor];
Joel Hansen

@ Carpetfizz Aggiungi '[self.window makeKeyAndVisible];' al tuo AppDelegate.
Alserda

4
"lancio dell'app con uno schermo nero", nessuno ha idea di questo?
Umit Kaya

@Umitk imposta lo sfondo su bianco (view.backgroundColor = .white) o su qualsiasi altro colore che ti piace
Stephane Paquet

65

Per chiunque debba affrontare questo problema su Xcode 11, ecco come risolverlo se affronti questo problema quando esegui la configurazione del progetto senza storyboard

(Aggiungendo alcune parti che la ricardopereira ha mancato)

1) Innanzitutto, elimina il file Main.storyboard

2) Successivamente, vai a PROJECT_NAME -> GENERAL

Nel menu a discesa dell'interfaccia principale, elimina il testo Main

rimuovendo il riferimento a main dalle impostazioni generali

3) Ora vai su info.plist ed elimina Storyboard Name

rimuovendo il riferimento allo storyboard da info.plist

4) Infine, modifica il codice della scena (_: willConnectTo: options) nel file SceneDelegate.swift (Sì! Non è più in App Delegate.)

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()
    }

Puoi anche fare riferimento a questo video invece: https://www.youtube.com/watch?v=Htn4h51BQsk


3
La tua risposta è quasi corretta solo che c'è un piccolo cambiamento nella funzione della scena: 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
Per aggiungere un po 'di enfasi, la voce info.plist non è solo la solita voce principale dello storyboard, ma ANCHE quella nel manifesto della scena dell'applicazione che è nuova per iOS 13. Ho dovuto leggere due volte prima di rendermene conto.
jboulter11

Questo è il modo giusto di fare le cose adesso! ^^ Apple ha continuato a cambiare le cose.
Yuchen Zhong

59

Puoi controllare l'appartenenza di destinazione dello storyboard. Forse è lì che sta il problema:

Dovrebbe essere così:

Target di appartenenza


Ho avuto lo stesso problema e all'inizio pensavo di non copiare le risorse giuste sulla destinazione, ma la correzione dell'appartenenza alla destinazione ha risolto il problema.
pyj

2
Grazie, ha funzionato! Ho fatto Pulisci, Rinomina file, Aggiorna Plist senza gioia. È sempre il più ovvio che ti capisca.
Jim Geldermann,

Ciao, sto
riscontrando

Per qualche motivo, il mio obiettivo non è stato selezionato .. Grazie per questa risposta .. Risolto !!
Ümañg ßürmån

39

Un aggiornamento per le applicazioni create per iOS 13.0 e versioni successive. (Xcode 11)

Se viene visualizzato l'errore "Impossibile trovare uno storyboard denominato" Principale "nel pacchetto anche dopo aver modificato il" Nome di base del file storyboard principale "in info.plist e" Interfaccia principale "in Distribuzione in Target.

Quindi devi modificare un'altra voce nel file info.plist.

  1. Apri il file info.plist.
  2. Espandere "Manifest della scena dell'applicazione".
  3. Espandi "Configurazione scena".
  4. Espandere l'elemento 0 in "Ruolo sessioni applicazione" e quindi modificare il nome dello storyboard.

inserisci qui la descrizione dell'immagine

E la tua applicazione inizierà a funzionare.


1
Questa è assolutamente la risposta giusta. Apparentemente non è più sufficiente impostare lo storyboard principale dal menu a discesa Generale> Interfaccia principale.
NRitH

1
Grazie per questo. L'eliminazione della chiave "Application Scene Manifest" (insieme a tutte le sue sottochiavi) ha risolto il problema per me.
Greg Brown


1
Mi hai salvato la vita :)
Yusuf Kamil AK

17

In un progetto che utilizza UIScene in iOS 13 e Xcode 11, è necessario rimuovere il fileUISceneStoryboardFile chiave dal file .plist.

Xcode 11:

xcode11-uiscene

Modifica direttamente dal file:

uiscene-plist


15

Ho cancellato l'app dal mio telefono, ho fatto Prodotto -> Pulisci e l'ho caricata di nuovo. È tutto ciò che è servito per me.


per ogni esecuzione, se elimina, mi sta solo eseguendo ... per favore aiutami in xcode 10.1
Aruna M

12

Ho ricevuto questo errore, tuttavia, era mia intenzione rimuovere completamente gli storyboard.

La rimozione della chiave 'Main Storyboard file base name' dal mio plist ha risolto l'errore.


10

Impossibile trovare uno storyboard denominato "Principale" nel pacchetto

Motivo a cui potrei pensare:

Per quanto mi ha concluso la mia conoscenza di iOS, questo è successo perché XCode non è stato in grado di trovare il riferimento al file Main.storyboard all'interno della directory del mio progetto per copiarlo nell'App.

Risoluzione:

  1. Selezionato il file Main.storyboard e provato a eliminare, e dalla finestra di dialogo che si apre come segue: inserisci qui la descrizione dell'immagine

  2. Fare clic sul pulsante "Rimuovi riferimento".

  3. Quindi, dal punto effettivo in cui ho potuto trovare il file Main.storyboard all'interno della directory del progetto, trascinato e rilasciato su XCode, e di nuovo dalla finestra di dialogo che si apre come segue: inserisci qui la descrizione dell'immagine

  4. Ho scelto "Crea riferimenti a cartelle" (perché era una cosa che intendevo fare perché ho cambiato la struttura di file e cartelle del mio progetto). Ma la maggior parte delle volte potrebbe funzionare anche scegliere "Crea gruppi". E ha fatto clic sul pulsante "Fine". I miei file Storyboard erano già all'interno come mostrato nello screenshot già all'interno di una Base.lprojdirectory come segue:

    inserisci qui la descrizione dell'immagine

    Nota: una cosa importante da ricordare qui in questo passaggio è, non dimenticare di selezionare ON la casella di controllo "Aggiungi a target" nella tua app.

  5. Pulisci il prodotto, ricostruiscilo e, se ha successo, la maggior parte delle volte prova a eseguirlo.

Spero che questo possa essere utile a qualcun altro là fuori! L'ho provato su XCode 7.3.1 e su iOS Sim 9.3 e iPhone 6S!


Per favore aiutatemi anche ad affrontare questo problema dopo aver installato os10.14.1 e xc0de 10.1 .. sto provando a risolverlo da 3 giorni ma ancora ..il mio progetto funziona bene in xcode9.1 ..
Aruna M

@ ArunaM Hai provato i passaggi precedenti che ho fornito nella risposta? Qual era lo stato dopo averlo fatto?
Randika Vishman

1
Questa è stata la soluzione quando ho rimosso un ViewController dal progetto che ha causato lo stesso errore!
Slarty Bartfast

8

Segui i passi:

1) Innanzitutto, fai clic sul tuo storyboard

2) Quindi fare clic su File Inspector

3) Quindi seleziona "Iscrizione target"

Immagine dello schermo


6

Il simulatore non fa distinzione tra maiuscole e minuscole, ma il dispositivo lo è. Se il tuo storyboard si chiama MainStoryboard, non MainStoryBoard, questo causerà il tuo problema. e inoltre * non usare le estensioni scrivi solo il nome dello storyboard

main.storyboard -> solo main è il nome dello storyboard


6

Swift 5.1 e xCode 11.2

Nel mio caso, ho dimenticato di cambiare Storyboard NameinInfo.plist

inserisci qui la descrizione dell'immagine

Info.plist codice sorgente

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

4
  1. Apri il tuo file storyboard
  2. Quindi fare clic su File Inspector
  3. Quindi seleziona "Target Membership" e controlla il tuo progetto
  4. Fai lo stesso per il file ViewController !!! parte importante se usi ViewController.swift o ViewController.m con il tuo storyboard !!!

4

Questo errore si verifica durante il recupero del file main.storyboard dal cestino dopo aver eliminato il file. Anche ieri ho affrontato lo stesso problema.

Devi impostare il percorso della posizione di main.storyboard come Relativo al gruppo nell'ispettore file di main.storyboard. Dopodiché nello stesso attributo, devi assicurare il segno di spunta sulla destinazione dell'app (come puoi vedere nell'immagine allegata).

inserisci qui la descrizione dell'immagine


2

Due diverse soluzioni che hanno funzionato per me dopo l'aggiornamento a Xcode 10.1:

  • In File-> Impostazioni area di lavoro (o progetto) . Passa a Legacy Build System .

  • Nelle fasi Build dei tuoi obiettivi , rimuovi la cartella Base.lproj da Copy Bundle Resources (se elencato) e assicurati che ciascuno dei tuoi storyboard sia elencato e copiato separatamente.

Dopo aver applicato una delle correzioni di cui sopra, assicurati di pulire la cartella build dal menu Prodotto una volta, altrimenti le correzioni potrebbero non funzionare correttamente.


1

L'eliminazione della riga in plist ha causato anche una schermata nera nella mia app. E l'ho risolto abilitando l'appartenenza di destinazione allo storyboard


1

Come ha detto Kalpit Gajera, "apri il file info.plist del tuo progetto e rimuovi la riga selezionata visualizzata nello screenshot". Devi semplicemente rimuovere "Nome base del file storyboard principale" da Info.plist. Dopo averlo rimosso, pulito ed eseguito, il programma non fallirà più ma mostrerà una schermata nera. Apri di nuovo Info.plist e aggiungi manualmente la riga. Problema risolto.


0

scegli main.storyboard, cambia la visualizzazione come iOS 6.1 e versioni precedenti, quindi xcode ti dirà cosa devi fare.

inserisci qui la descrizione dell'immagine


0

La mia soluzione è:

Quando ho aggiunto una connessione Seque tra due viste e nella configurazione di Projekt l'obiettivo di distribuzione è inferiore a 8,0 ottengo questo errore.

ok, facile comprensione quando sviluppi per IOS 6.0 (ad esempio) non puoi usare Seque, perché Seque necessita di IOS 8.0 o successivo ...... ;-)

quindi, ho impostato l'obiettivo di distribuzione su 8.0 e l'errore è sparito !!!! per il resto, annullo tutte le connessioni Segue e le gestisco con IBAction, vecchia scuola ;-)


0

Stavo spostando il file Main.Storyboard nella sottocartella "blu" che causava problemi, ho dovuto aggiungere sottocartelle seguendo queste istruzioni Xcode 6.3 Nuovo problema con i file

quindi spostare il file Main.Storyboard nella sottocartella gialla ha funzionato per me


0

Il mio problema è stato risolto rimuovendo il .xmlsuffisso dal fileMain.storyboard.xml file .

A quanto pare, il suffisso è cambiato rispetto alla versione da cui ho importato il progetto.

Pertanto, rinominare il file (rimuovendo il .xmlsuffisso) e riavviare, quindi Project-> clean....risolto il problema.


0

Se hai ancora lo schermo nero, prova ad aggiungere il codice seguente nel delegato della scena

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

0

Se il tuo storyboard viene aggiunto nel progetto (che determinerai dalla sezione Project File Inspector dell'area dell'utilità xcode)La casella di controllo è contrassegnata nell'area di appartenenza di destinazione

Devi solo rimuoverlo Main.Storyboardda "Copia risorsa pacchetto" (in Build Phase) e aggiungerlo di nuovo in "Copia risorsa pacchetto". Questo ha funzionato per me.inserisci qui la descrizione dell'immagine


-1

Ok, questo è stato un processo. Provando tante cose diverse. Esecuzione di xcode 6.4 su OS 10.11. Non riesco a trovare il problema "Principale". Quello che alla fine ho fatto è stato spostare il main.storyboard anche sul mio desktop dal Finder. Ho pulito, creato e chiuso xcode. riavviato xcode ora ha un main.storyboard rosso. lo corro virtualmente fa la stessa cosa. quindi faccio clic con il tasto destro sulla cartella del progetto e scelgo l'opzione aggiungi file a ... Sfoglia dove si trova e lo apro. poi quando è lì a destra dovrebbe esserci l'ispettore di identità. fare clic sulla piccola cartella in posizione. sfoglia nuovamente quella cartella e seleziona scegli. Poi ho corso e ha funzionato. Amen !!!


-1

Seleziona il controller di visualizzazione che desideri visualizzare per primo nell'elenco sul lato sinistro dello storyboard, quindi nell'ispettore degli attributi assicurati che il suo titolo sia "Principale" e che la casella di controllo "È controller di visualizzazione iniziale" sia selezionata.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.