У меня странная ошибка: 'Could not find a storyboard named 'Main' in bundle NSBundle'
при попытке запустить приложение на реальном устройстве iOS.
У меня есть файл в моем каталоге, и он отлично работает в симуляторе. Однако в Copy Bundle Resources
разделе файл Main.storyboard
красный.
Я попытался удалить его и добавить снова, перезапустить Xcode, очистить сборку и т.д., но безрезультатно. Это предупреждение, которое я получаю в 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
источник
источник
Ответы:
откройте info.plist вашего проекта и удалите выбранную строку, отображаемую на скриншоте
Если вы получаете черный экран, убедитесь, что ваша новая начальная раскадровка выбрана в качестве основного интерфейса.
источник
Вы можете проверить целевое членство раскадровки. Может быть, в этом проблема:
Это должно выглядеть так:
источник
Для тех, кто сталкивается с этой проблемой в Xcode 11, вот как вы ее исправите, если вы столкнетесь с этой проблемой при настройке проекта без раскадровки.
(Добавление некоторых частей, которые пропустил рикардоперейра )
1) Сначала удалите файл Main.storyboard
2) Затем перейдите в PROJECT_NAME -> GENERAL
В раскрывающемся списке основного интерфейса удалите текст Main
3) Теперь перейдите в info.plist и удалите имя раскадровки.
4) Наконец, измените код сцены (_: willConnectTo: options) в файле SceneDelegate.swift (да, его больше нет в 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() }
Вместо этого вы также можете обратиться к этому видео: https://www.youtube.com/watch?v=Htn4h51BQsk
источник
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() }
Обновление для приложений, созданных для iOS 13.0 и выше. (Xcode 11)
Если вы получаете сообщение об ошибке «Не удалось найти раскадровку с именем« Основная »в пакете даже после изменения« Базовое имя основного файла раскадровки »в info.plist и« Основной интерфейс »в разделе« Развертывание в целевом объекте ».
Затем вам нужно изменить другую запись в файле info.plist.
И ваше приложение заработает.
источник
В проекте, который используется
UIScene
в iOS 13 и Xcode 11, вам необходимо удалитьUISceneStoryboardFile
ключ из.plist
.Xcode 11:
Переход прямо из файла:
источник
Я удалил приложение со своего телефона, сделал Продукт -> Очистить и снова загрузил его. Это все, что мне потребовалось.
источник
Я получил эту ошибку, однако я намеревался полностью удалить раскадровки.
Удаление ключа "Основное имя файла раскадровки" из моего списка устранило ошибку.
источник
Не удалось найти раскадровку с именем "Основная" в наборе
Причина, о которой я мог думать:
Насколько я понял из моих знаний iOS, это произошло только потому, что XCode не смог найти ссылку на файл Main.storyboard в моем каталоге проекта, чтобы скопировать его в приложение.
Разрешение:
Выбрал файл Main.storyboard и попытался удалить, а в появившемся диалоговом окне:
Нажмите кнопку «Удалить ссылку».
Затем из фактического места, где я мог найти файл Main.storyboard в каталоге проекта, перетащить его и оставить в XCode, и снова из диалогового окна, которое появляется следующим образом:
Я выбрал «Создать ссылки на папки» (потому что это единственное, что я намеревался сделать, потому что я изменил структуру файлов и папок моего проекта). Но в большинстве случаев выбор «Создать группы» также может сработать. И нажал кнопку «Готово». Мои файлы раскадровки уже были внутри, как показано на скриншоте, уже в
Base.lproj
каталоге, как показано ниже:Примечание. На этом этапе необходимо напомнить одну важную вещь : не забудьте поставить галочку в поле «Добавить в цели» в вашем приложении.
Очистите Продукт, перестройте его и, если это будет удачно, в большинстве случаев попробуйте запустить его.
Надеюсь, это может быть полезно кому-то еще! Я пробовал это на XCode 7.3.1 и на iOS Sim 9.3 и iPhone 6S!
источник
Следуйте шагам:
1) Сначала щелкните свою раскадровку
2) Затем нажмите File Inspector.
3) Затем выберите «Целевое членство».
источник
Симулятор не чувствителен к регистру, но устройство чувствительно. Если ваша раскадровка называется MainStoryboard, а не MainStoryBoard, это вызовет вашу проблему. и также * не используйте расширения, пишите только имя раскадровки
main.storyboard -> только main - это имя раскадровки
источник
Swift 5.1 и xCode 11.2
В моем случае, я забыл изменить
Storyboard Name
вInfo.plist
Info.plist
исходный код<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>
источник
источник
Эта ошибка возникает, когда вы восстанавливаете файл main.storyboard из корзины после удаления файла. Вчера я тоже столкнулся с такой же проблемой.
Вы должны указать путь к файлу main.storyboard относительно группы в файловом инспекторе main.storyboard. После этого в том же атрибуте вы должны поставить галочку на своей цели приложения (как вы можете видеть на прикрепленном изображении).
источник
Два разных решения, которые сработали для меня после обновления до Xcode 10.1:
В File-> Workspace (or Project) Settings . Переключитесь на устаревшую систему сборки .
На целевых этапах сборки удалите папку Base.lproj из ресурсов Copy Bundle (если они указаны) и убедитесь, что каждая из ваших раскадровок указана и скопирована отдельно.
После применения любого из вышеперечисленных исправлений обязательно один раз очистите папку сборки из меню продукта, иначе исправления могут работать некорректно.
источник
Удаление строки в plist вызвало черный экран и в моем приложении. И я исправил это, включив целевое членство в раскадровке
источник
Как сказал Калпит Гаджера, «откройте info.plist вашего проекта и удалите выбранную строку, отображаемую на скриншоте». Вы просто удаляете "Основное имя файла раскадровки" из Info.plist. После того, как вы удалите его, очистите и запустите, программа больше не будет давать сбой, но будет отображать черный экран. Снова откройте Info.plist и снова добавьте строку вручную. Проблема решена.
источник
выберите main.storyboard, измените вид на iOS 6.1 и ранее, тогда xcode сообщит вам, что вам нужно сделать.
источник
Мое решение:
Когда я добавил Seque Connection между двумя представлениями и в конфигурации проекта, цель развертывания меньше 8.0, я получаю эту ошибку.
хорошо, понятно, когда вы разрабатываете для IOS 6.0 (например), вы не можете использовать Seque, потому что Seque требует IOS 8.0 или новее ...... ;-)
Итак, я установил цель развертывания на 8.0, и ошибка исчезла !!!! в другое время я отменяю все Segue Connections и обрабатываю их с помощью IBAction, старой школы ;-)
источник
Я перемещал файл Main.Storyboard в «синюю» подпапку, что вызывало проблемы, мне пришлось добавить подпапки, следуя этим инструкциям. Xcode 6.3 New File Issue
затем перемещение файла Main.Storyboard в желтую подпапку сработало для меня
источник
Моя проблема была решена путем удаления
.xml
суффикса из файлаMain.storyboard.xml file
.Судя по всему, суффикс изменился с той версии, из которой я импортировал проект.
Поэтому переименование файла (удаление
.xml
суффикса) и перезапуск устранилиProject-> clean....
проблему.источник
Если у вас все еще есть черный экран, попробуйте добавить ниже код в делегат сцены
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()
источник
Если ваша раскадровка добавлена в проект (что вы определите в разделе Project File Inspector в области утилиты xcode)
Вам просто нужно удалить его
Main.Storyboard
из «Копировать ресурс пакета» (вBuild Phase
) и снова добавить его в «Копировать ресурс пакета». Это сработало для меня.источник
Хорошо, это был процесс. Пробует столько разных вещей. Запуск xcode 6.4 в ОС 10.11. Не удается найти "Основную" проблему. В конце концов я переместил main.storyboard на рабочий стол из Finder, сделал чистую сборку и вышел из xcode. перезапустил xcode, теперь у него красный main.storyboard. я запускаю его практически то же самое. затем я щелкаю правой кнопкой мыши папку проекта и выбираю опцию добавления файлов ... Перейдите туда, где она находится, и откройте ее. затем, когда он будет справа, должен быть инспектор по удостоверениям личности. щелкните небольшую папку под местоположением. перейдите к этой папке еще раз и выберите «Выбрать». Потом я побежал, и это сработало. Аминь !!!
источник
Выберите контроллер представления, который вы хотите сначала отобразить в списке в левой части раскадровки, затем в инспекторе атрибутов убедитесь, что его заголовок - «Основной» и установлен флажок «Является исходным контроллером представления».
источник