Не удалось найти раскадровку с именем 'MainStoryBoard' в комплекте NSBundle - PullRequest
44 голосов
/ 01 января 2012

Я запустил новое приложение несколько дней назад и начал работать с симулятором для его тестирования. Я начал как пустой проект и вручную добавил раскадровку. Симулятор собирает и запускает мое приложение просто отлично, но когда я пытаюсь собрать его на своем iPhone, я получаю сообщение ' Не удалось найти раскадровку с именем' MainStoryBoard 'в комплекте NSBundle '.

Google ничего не нашел и этот вопрос предложил, чтобы я проверил свою цель для раскадровки, но все на месте. Тем не менее, если что-то не будет на месте, симулятор тоже не запустится.

Кто-нибудь может указать мне правильное направление?

Ответы [ 26 ]

75 голосов
/ 21 февраля 2012

Мое приложение нормально работало на симуляторе iPhone, но, как ни странно, Xcode перестал отвечать, и мне пришлось принудительно завершить работу Xcode. Когда я перезапустил Xcode, я столкнулся с «Не удалось найти раскадровку с именем MainStoryboard ....»,

Я исправил эту проблему, выполнив следующие шаги:

  1. Переименование "MainStoryboard.storyboard" в "MainStoryboard_1.storyboard"
  2. Откройте файл «$ your_app $ -Info.plist», расположенный в папке «Supporting Files». Измените "Основное имя файла раскадровки" на "MainStoryboard_1.storyboard".
  3. Перезапустите приложение, и оно сработало для меня.
  4. Я переименовал файл раскадровки обратно в его исходный файл «MainStoryboard.storyboard».
  5. Отредактировал файл .plist обратно в исходное состояние.
  6. Перезапустите приложение, и оно сработало для меня.

По какой-то причине файл "MainStoryboard.storyboard" не был распознан после принудительного выхода из XCode, и после выполнения вышеуказанных шагов приложение снова распознало файл.

Надеюсь, это решение поможет ..

35 голосов
/ 08 января 2012

Симулятор не чувствителен к регистру, но устройство. Если ваша раскадровка называется MainStoryboard, а не MainStoryBoard, это вызовет вашу проблему.

23 голосов
/ 01 июля 2014

Просто хочу упомянуть сценарий, с которым я столкнулся. Я не знаю как, но раскадровка отключилась от цели, хотя она все еще была частью проекта. Чтобы это исправить, я открыл раскадровку, выбрал «Инспектор файлов» (крайний левый значок на правой панели) и проверил проект в разделе «Целевое членство». Надеюсь, это кому-нибудь поможет.

9 голосов
/ 18 марта 2014

Проблема возникает, когда вы снимаете флажок «Использовать базовую интернационализацию» и запускаете симулятор в другой локали, а не в конкретной локализации.

Например, вы задаете локализацию zh-CN в настройках проекта, но запускаете симулятор под en-US.

6 голосов
/ 16 февраля 2017

Перепробовал все решения, упомянутые выше, но не сработал.

После тщательного исследования обнаружил виновника:

Ресурс комплекта копирования отсутствовал в TARGETS -> Этапы сборки

Это было случайно удалено при удалении Cocoapods.

Ниже приведены шаги, чтобы исправить это:

  1. Перейти к TARGETS вашего проекта
  2. Нажмите plus (+) button присутствует в верхнем левом углу
  3. Выберите New Copy Bundle Resources из выпадающего списка
  4. Теперь добавьте Storyboard files (Main, Launchscreen etc). Также добавьте папку Assets.Вы можете добавить эти файлы, нажав кнопку «плюс» (+), расположенную внизу

screenshot

Удалите derived data content Delete the app из симулятора / устройства и запустите снова
4 голосов
/ 22 декабря 2014

Я подумал, что вы, возможно, удалили раскадровку и решили использовать файл .xib при первом запуске приложения.В этом сценарии Xcode попытается найти несуществующую раскадровку.

Для этого случая нажмите Project> Info> Custom iOS Target Properties и удалите эту пару значений ключа: Main storyboard file base name

4 голосов
/ 28 января 2016

Это помогло мне (Swift 2.1, Xcode 7.2) для приложения с панелью вкладок

    let storyboard: UIStoryboard = UIStoryboard(name:"Main",bundle: NSBundle(forClass: self.dynamicType))
    let tabController = storyboard.instantiateViewControllerWithIdentifier("MyTabBarIdentifier") as! UITabBarController

У меня была Main.storyboard с правильным целевым членством, копировала ресурсы пакета, очищала папку сборки и т. Д. (Большинство ответов указывали на это).

3 голосов
/ 29 мая 2015

Простая Чистка исправила ошибку для меня.

3 голосов
/ 25 апреля 2017

У меня тоже была такая же проблема, что вызвало исключение такого типа - я написал «Main.storyboard» вместо «Main». Нам не нужно указывать расширение .storyboard.

3 голосов
/ 19 ноября 2015

Если вы используете для навигации по исходному коду, попробуйте использовать ниже код

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle: nil];

Часто люди вводят «Main.storyboard» в качестве имени, поскольку это буквально имя файла, но для целей кодирования Obj-C «X.storyboard» имеет имя «X», поэтому в в этом случае @ "Main".

...