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 Resources
sekcji plik Main.storyboard
jest 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
iphone
ios
objective-c
xcode
Carpetfizz
źródło
źródło
Odpowiedzi:
otwórz info.plist swojego projektu i usuń wybrany wiersz wyświetlony na zrzucie ekranu
Jeśli pojawi się czarny ekran, upewnij się, że nowy początkowy scenorys jest wybrany jako główny interfejs
źródło
Możesz sprawdzić docelowe członkostwo scenorysu. Może być tam, gdzie jest problem:
Powinien wyglądać tak:
źródło
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
3) Teraz przejdź do info.plist i usuń nazwę Storyboard
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
źródło
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() }
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.
Twoja aplikacja zacznie działać.
źródło
W projekcie korzystającym
UIScene
z systemów iOS 13 i Xcode 11 należy usunąćUISceneStoryboardFile
klucz z pliku.plist
.Xcode 11:
Zmiana bezpośrednio z pliku:
źródło
Usunąłem aplikację z telefonu, zrobiłem Produkt -> Wyczyść i załadowałem ją ponownie. To wszystko, czego potrzebowałem.
źródło
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.
źródło
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:
Wybrano plik Main.storyboard i próbowano go usunąć, a następnie w oknie dialogowym, które wyskakuje w następujący sposób:
Kliknięto przycisk „Usuń odniesienie”.
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:
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.lproj
katalogu w następujący sposób: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.
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!
źródło
Wykonaj kroki:
1) Najpierw kliknij swoją tablicę opowieści
2) Następnie kliknij Inspektor plików
3) Następnie wybierz „Członkostwo docelowe”
źródło
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
Swift 5.1 i xCode 11.2
W moim przypadku, zapomniałem zmienić
Storyboard Name
wInfo.plist
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>
źródło
źródło
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).
źródło
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.
źródło
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
źródło
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.
źródło
wybierz main.storyboard, zmień widok na iOS 6.1 i starsze, a xcode powie ci, co musisz zrobić.
źródło
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 ;-)
źródło
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
źródło
Mój problem został rozwiązany przez usunięcie
.xml
przyrostka zMain.storyboard.xml file
.Najwyraźniej sufiks zmienił się od wersji, z której zaimportowałem projekt.
Dlatego zmiana nazwy pliku (usunięcie
.xml
sufiksu) i ponowne uruchomienie, a następnieProject-> clean....
naprawiono problem.źródło
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()
źródło
Jeśli Twój scenorys jest dodany do projektu (co określisz w sekcji Inspektor plików projektu w obszarze narzędziowym xcode)
Wystarczy usunąć
Main.Storyboard
z „Kopiuj zasób paczki” (wBuild Phase
) i dodać go ponownie w „Kopiuj zasób paczki”. To zadziałało dla mnie.źródło
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 !!!
źródło
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.
źródło