Nie można znaleźć scenorysu o nazwie „Główny” w pakiecie

86

Otrzymuję dziwny błąd: 'Could not find a storyboard named 'Main' in bundle NSBundle'podczas próby uruchomienia aplikacji na prawdziwym urządzeniu z systemem iOS.

Mam plik w swoim katalogu i działa dobrze w symulatorze. Jednak w Copy Bundle Resourcessekcji plik Main.storyboardjest czerwony.

Próbowałem go usunąć i dodać ponownie, ponownie uruchomić Xcode, wyczyścić kompilację itp. Bez skutku. Oto ostrzeżenie, które otrzymuję w 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
Carpetfizz
źródło
Opisałem, jak rozwiązać problem w tym poście: stackoverflow.com/a/21098195/1141395
Alex Cio
Ten problem występuje głównie z powodu uszkodzonej instalacji aplikacji. Rozwiązaniem jest wyczyszczenie i zbudowanie projektu. Usuń również istniejącą aplikację z urządzenia / symulatora i uruchom ponownie.
Krishnabhadra
Użytkownicy Xcode 11 , przewiń w dół do stackoverflow.com/a/58452686 , prawdopodobnie to jest dokładnie twoja sprawa.
Cemen

Odpowiedzi:

92

otwórz info.plist swojego projektu i usuń wybrany wiersz wyświetlony na zrzucie ekranuwprowadź opis obrazu tutaj

Jeśli pojawi się czarny ekran, upewnij się, że nowy początkowy scenorys jest wybrany jako główny interfejs wprowadź opis obrazu tutaj

Kalpit Gajera
źródło
24
Dzięki, ale to właśnie spowodowało, że moja aplikacja została uruchomiona z czarnym ekranem. Jednak bez awarii.
Carpetfizz
Upewnij się, że w aplikacji - (BOOL) znajdują się te dwa wiersze: (UIApplication *) application didFinishLaunchingWithOptions: (NSDictionary *) launchOptions ...: (1) self.window = [[UIWindow assign] initWithFrame: [[UIScreen mainScreen] miedza]]; (2) self.window.backgroundColor = [UIColor whiteColor];
Joel Hansen
@ Carpetfizz Dodaj „[self.window makeKeyAndVisible];” do swojego AppDelegate.
Alserda
4
„Uruchomienie aplikacji z czarnym ekranem”, nikt nie ma na to pomysłu?
Umit Kaya
@Umitk ustaw tło na białe (view.backgroundColor = .white) lub dowolny inny kolor, który lubisz
Stephane Paquet
59

Możesz sprawdzić docelowe członkostwo scenorysu. Może być tam, gdzie jest problem:

Powinien wyglądać tak:

Członkostwo docelowe

Geekoder
źródło
Miałem ten sam problem i na początku myślałem, że nie kopiuję odpowiednich zasobów do celu, ale naprawienie członkostwa celu rozwiązało problem.
pyj
2
Dzięki, udało się! Zrobiłem Clean, Rename File, Update Plist bez radości. To zawsze najbardziej oczywiste, że cię dopada.
Jim Geldermann
Cześć, mam ten sam problem, ale okno członkostwa docelowego nie jest wyświetlane, Xcode 7. Proszę o pomoc
DrPatience
Z jakiegoś powodu mój cel nie został wybrany. Dzięki za tę odpowiedź .. Rozwiązany !!
Ümañg ßürmån
58

Dla każdego, kto boryka się z tym problemem w Xcode 11, oto jak to naprawić, jeśli napotkasz ten problem podczas konfigurowania projektu bez scenorysu

(Dodawanie części, których Ricardopereira przegapił)

1) Najpierw usuń plik Main.storyboard

2) Następnie przejdź do PROJECT_NAME -> GENERAL

W menu rozwijanym głównego interfejsu usuń tekst Main

usunięcie odniesienia do main z ustawień ogólnych

3) Teraz przejdź do info.plist i usuń nazwę Storyboard

usunięcie odniesienia do storyboardu z info.plist

4) Na koniec zmodyfikuj kod sceny (_: willConnectTo: options) w pliku SceneDelegate.swift (Tak! Nie ma go już w 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()
    }

Możesz także odnieść się do tego filmu wideo: https://www.youtube.com/watch?v=Htn4h51BQsk

Parth Tamane
źródło
3
Twoja odpowiedź jest prawie poprawna, tylko jest niewielka zmiana w funkcji sceny: 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
Aby dodać trochę nacisku, wpis info.plist to nie tylko zwykły wpis w głównym scenariuszu, ale także ten w manifeście sceny aplikacji, który jest nowy dla iOS 13. Musiałem dwukrotnie przeczytać, zanim zdałem sobie sprawę.
jboulter11,
To jest właściwy sposób robienia rzeczy teraz! ^^ Apple ciągle zmieniał rzeczy.
Yuchen Zhong
36

Aktualizacja dla aplikacji stworzonych dla iOS 13.0 i nowszych. (Xcode 11)

Jeśli pojawi się błąd „Nie można znaleźć scenorysu o nazwie„ Główny ”w pakiecie nawet po zmianie„ Nazwy podstawowej pliku scenorysu głównego ”w info.plist i„ Główny interfejs ”w obszarze Wdrażanie w miejscu docelowym.

Następnie musisz zmienić inny wpis w pliku info.plist.

  1. Otwórz plik info.plist.
  2. Rozwiń „Manifest sceny aplikacji”.
  3. Rozwiń „Konfiguracja sceny”.
  4. Rozwiń element 0 w sekcji „Rola sesji aplikacji”, a następnie zmień tam nazwę serii ujęć.

wprowadź opis obrazu tutaj

Twoja aplikacja zacznie działać.

Shubham
źródło
1
To jest absolutnie właściwa odpowiedź. Najwyraźniej nie wystarczy już ustawić głównego scenariusza z listy rozwijanej Ogólne> Główny interfejs.
NRitH
1
Dzięki za to. Usunięcie klucza „Manifest sceny aplikacji” (wraz ze wszystkimi jego podkluczami) rozwiązało problem.
Greg Brown
1
Dosłownie
1
Uratowałeś mi życie :)
Yusuf Kamil AK
17

W projekcie korzystającym UIScenez systemów iOS 13 i Xcode 11 należy usunąć UISceneStoryboardFileklucz z pliku .plist.

Xcode 11:

xcode11-uiscene

Zmiana bezpośrednio z pliku:

uiscene-plist

ricardopereira
źródło
15

Usunąłem aplikację z telefonu, zrobiłem Produkt -> Wyczyść i załadowałem ją ponownie. To wszystko, czego potrzebowałem.

user1021430
źródło
za każde wykonanie, jeśli usuwa, to tylko mnie wykonuje ... proszę o pomoc w xcode 10.1
Aruna M
12

Otrzymałem ten błąd, jednak moim zamiarem było całkowite usunięcie scenorysów.

Usunięcie klucza „Nazwa bazowa pliku głównego scenorysu” z mojego pliku plist wyleczyło błąd.

kraftydevil
źródło
10

Nie można znaleźć scenorysu o nazwie „Główny” w pakiecie

Powód, który przychodzi mi do głowy:

Jeśli chodzi o moją wiedzę na temat iOS, stało się tak, ponieważ XCode nie mógł znaleźć odniesienia do pliku Main.storyboard w katalogu mojego projektu, aby skopiować go do aplikacji.

Rozkład:

  1. Wybrano plik Main.storyboard i próbowano go usunąć, a następnie w oknie dialogowym, które wyskakuje w następujący sposób: wprowadź opis obrazu tutaj

  2. Kliknięto przycisk „Usuń odniesienie”.

  3. Następnie z rzeczywistego miejsca, w którym mogłem znaleźć plik Main.storyboard w katalogu projektu, przeciągnąłem go i upuściłem do XCode i ponownie z okna dialogowego, które wyskakuje w następujący sposób: wprowadź opis obrazu tutaj

  4. Wybrałem „Utwórz odniesienia do folderów” (ponieważ to jedna rzecz, którą zamierzałem zrobić, ponieważ zmieniłem strukturę plików i folderów projektu). Ale w większości przypadków wybranie opcji „Utwórz grupy” też może działać. I kliknął przycisk „Zakończ”. Moje pliki Storyboard były już w obrębie, jak pokazano na zrzucie ekranu, już w Base.lprojkatalogu w następujący sposób:

    wprowadź opis obrazu tutaj

    Uwaga: jedną ważną rzeczą do przypomnienia na tym etapie jest to, aby nie zapomnieć o zaznaczeniu tego pola wyboru „Dodaj do celów” w swojej aplikacji.

  5. Wyczyść produkt, ponownie skompiluj, a jeśli się powiedzie, w większości przypadków próba uruchomienia zakończy się sukcesem.

Mam nadzieję, że to może być pomocne dla kogoś innego! Wypróbowałem to na XCode 7.3.1 oraz na iOS Sim 9.3 i iPhone 6S!

Randika Vishman
źródło
Pomóż mi również w obliczu tego problemu po zainstalowaniu os10.14.1 i xc0de 10.1..am próbuję rozwiązać od 3 dni, ale nadal ... mój projekt działa dobrze w xcode9.1 ..
Aruna M
@ArunaM Czy wypróbowałeś powyższe kroki, które podałem w odpowiedzi? Jaki był stan po wykonaniu tej czynności?
Randika Vishman,
1
To było rozwiązanie, kiedy usunąłem ViewController z projektu, który spowodował ten sam błąd!
Slarty Bartfast
8

Wykonaj kroki:

1) Najpierw kliknij swoją tablicę opowieści

2) Następnie kliknij Inspektor plików

3) Następnie wybierz „Członkostwo docelowe”

Zrzut ekranu

Vicky
źródło
6

Symulator nie rozróżnia wielkości liter, ale urządzenie tak. Jeśli Twój scenorys nazywa się MainStoryboard, a nie MainStoryBoard, spowoduje to problem. a także * nie używaj rozszerzeń, pisz tylko nazwę tablicy scenariuszy

main.storyboard -> tylko main to nazwa storyboardu


źródło
6

Swift 5.1 i xCode 11.2

W moim przypadku, zapomniałem zmienić Storyboard NamewInfo.plist

wprowadź opis obrazu tutaj

Info.plist kod źródłowy

    <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
źródło
4
  1. Otwórz plik storyboardu
  2. Następnie kliknij Inspektor plików
  3. Następnie wybierz „Członkostwo docelowe” i sprawdź swój projekt
  4. Zrób to samo dla pliku ViewController !!! Ważna część, jeśli używasz ViewController.swift lub ViewController.m ze swoim storyboardem !!!
user1195202
źródło
3

Ten błąd pojawia się podczas odzyskiwania pliku main.storyboard z kosza po usunięciu pliku. Wczoraj też miałem ten sam problem.

Musisz ustawić ścieżkę lokalizacji pliku main.storyboard jako Względną do grupy w inspektorze plików main.storyboard. Następnie w tym samym atrybucie musisz zaznaczyć znacznik wyboru na celu aplikacji (jak widać na załączonym obrazku).

wprowadź opis obrazu tutaj

saumya ranjan Gangwar
źródło
2

Dwa różne rozwiązania, które zadziałały po uaktualnieniu do Xcode 10.1:

  • W Plik-> Ustawienia przestrzeni roboczej (lub projektu) . Przejdź do starszego systemu kompilacji .

  • W fazach budowania celów usuń folder Base.lproj z Copy Bundle Resources (jeśli jest na liście) i upewnij się, że każdy z twoich scenorysów jest wymieniony i skopiowany oddzielnie.

Po zastosowaniu jednej z powyższych poprawek upewnij się, że jeden raz wyczyściłeś folder kompilacji z menu Produkt, w przeciwnym razie poprawki mogą nie działać poprawnie.

LentoMan
źródło
1

Usunięcie wiersza w plist spowodowało również czarny ekran w mojej aplikacji. Naprawiłem to, włączając docelowe członkostwo w scenorysie

seashore liu
źródło
1

Jak powiedział Kalpit Gajera, „otwórz info.plist swojego projektu i usuń wybrany wiersz wyświetlony na zrzucie ekranu”. Po prostu usuwasz `` nazwę bazową pliku głównego storyboardu '' z Info.plist. Po jego usunięciu, wyczyszczeniu i uruchomieniu program nie będzie już działać, ale wyświetli czarny ekran. Otwórz ponownie Info.plist i ręcznie dodaj wiersz z powrotem. Problem rozwiązany.

Mavin Martin
źródło
0

wybierz main.storyboard, zmień widok na iOS 6.1 i starsze, a xcode powie ci, co musisz zrobić.

wprowadź opis obrazu tutaj

Chris
źródło
0

Moje rozwiązanie to:

Kiedy dodałem połączenie Seque między dwoma widokami iw konfiguracji projektu, cel wdrożenia jest mniejszy niż 8,0, otrzymuję ten błąd.

ok, łatwe zrozumienie, gdy tworzysz na IOS 6.0 (na przykład) nie możesz używać Seque, ponieważ Seque wymaga IOS 8.0 lub nowszego ...... ;-)

więc ustawiłem cel wdrożenia na 8.0 i błąd zniknął !!!! poza tym anuluję wszystkie połączenia Segue i obsługuję to za pomocą IBAction, old school ;-)

Sven Vietense
źródło
0

Przenosiłem plik Main.Storyboard do "niebieskiego" podfolderu, który powodował problemy, musiałem dodać podfoldery zgodnie z tymi instrukcjami Xcode 6.3 Nowy problem z plikiem

następnie przeniesienie pliku Main.Storyboard do żółtego podfolderu zadziałało dla mnie

Aqib Mumtaz
źródło
0

Mój problem został rozwiązany przez usunięcie .xmlprzyrostka zMain.storyboard.xml file .

Najwyraźniej sufiks zmienił się od wersji, z której zaimportowałem projekt.

Dlatego zmiana nazwy pliku (usunięcie .xmlsufiksu) i ponowne uruchomienie, a następnie Project-> clean....naprawiono problem.

Craig D.
źródło
0

Jeśli nadal masz czarny ekran, spróbuj dodać poniższy kod w delegacie sceny

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
źródło
0

Jeśli Twój scenorys jest dodany do projektu (co określisz w sekcji Inspektor plików projektu w obszarze narzędziowym xcode)Pole wyboru jest zaznaczone w docelowym obszarze członkostwa

Wystarczy usunąć Main.Storyboardz „Kopiuj zasób paczki” (w Build Phase) i dodać go ponownie w „Kopiuj zasób paczki”. To zadziałało dla mnie.wprowadź opis obrazu tutaj

Sk Borhan Uddin
źródło
-1

Ok, to był proces. Próbowałem wielu różnych rzeczy. Uruchamianie xcode 6.4 w systemie operacyjnym 10.11. Nie można znaleźć „głównego” problemu. To, co w końcu zrobiłem, to przeniesienie main.storyboard na mój pulpit z Findera, wyczyszczenie, skompilowanie i zamknięcie xcode. zrestartowany xcode teraz ma czerwoną tablicę main.storyboard. ja go uruchamiam praktycznie robi to samo. następnie klikam prawym przyciskiem myszy folder projektu i wybieram opcję dodaj pliki do ... Przeglądaj, gdzie to jest i otwórz go. wtedy gdy jest po prawej, powinien być inspektor tożsamości. kliknij mały folder w lokalizacji. ponownie przejdź do tego folderu i wybierz opcję wybierz. Potem pobiegłem i zadziałało. Amen !!!

iSpeedyG
źródło
-1

Wybierz kontroler widoku, który chcesz najpierw wyświetlić na liście po lewej stronie scenorysu, a następnie w inspektorze atrybutów upewnij się, że jego tytuł to „Główny”, a pole wyboru „Jest początkowym kontrolerem widoku” jest zaznaczone.

Akashascosset
źródło